Обращение к свойствам родителя (ООП)
Доброго дня всем!
Есть некий объект 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, время: 07:42. |