Обращение к свойствам родителя (ООП)
Доброго дня всем!
Есть некий объект
var Model = function(modelName) {
var url = '/data/'+modelName+'.json';
this.Data = null;
$.ajax({
type: 'POST',
dataType: 'json',
url: url,
async: true,
success: function(response) {
Model.Data = response; // Вот тут беда
},
fail: function() {
alert('Error');
}
});
}
var table = new Model('table');
В указанном месте есть необходимость отдать данные в переменную this.Data Но использовать this не могу, а как иначе, не представляю. Пробовал через superclass, но не вышло. Я очень плох в ООП на JavaScript, надеюсь на подсказку! Заранее всем спасибо! |
var Model = function(modelName) {
var url = '/data/'+modelName+'.json',
self = this;
this.Data = null;
$.ajax({
type: 'POST',
dataType: 'json',
url: url,
async: true,
success: function(response) {
self.Data = response; // Вот тут беда
},
fail: function() {
alert('Error');
}
});
}
var table = new Model('table');
|
Ruslan_xDD, премного благодарен!
Как обычно, всё оказалось как нельзя проще... |
NapalmRain, колбэки лучше вынести в методы:
var Model = function(modelName) {
var url = '/data/' + modelName + '.json';
$.ajax({
type: 'POST',
dataType: 'json',
url: url,
async: true,
success: this.onSuccess.bind(this),
fail: this.onError.bind(this)
});
};
Model.prototype = {
Data: null,
onSuccess: function(response) {
this.Data = response;
},
onError: function() {
alert('Error');
}
};
var table = new Model('table');
Тогда и self не нужен будет. :) |
в $.ajax можно указать context:this, тогда и .bind(this) не понадобится
|
Яростный Меч, может и можно, я в jQuery не эксперт.
|
| Часовой пояс GMT +3, время: 21:44. |