Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.12.2015, 15:14
Аспирант
Отправить личное сообщение для NapalmRain Посмотреть профиль Найти все сообщения от NapalmRain
 
Регистрация: 17.03.2014
Сообщений: 40

Обращение к свойствам родителя (ООП)
Доброго дня всем!

Есть некий объект
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, надеюсь на подсказку!

Заранее всем спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 01.12.2015, 15:27
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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');
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2015, 15:36
Аспирант
Отправить личное сообщение для NapalmRain Посмотреть профиль Найти все сообщения от NapalmRain
 
Регистрация: 17.03.2014
Сообщений: 40

Ruslan_xDD, премного благодарен!
Как обычно, всё оказалось как нельзя проще...
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2015, 16:49
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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 не нужен будет.
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2015, 19:24
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

в $.ajax можно указать context:this, тогда и .bind(this) не понадобится
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2015, 19:38
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Яростный Меч, может и можно, я в jQuery не эксперт.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
for..in обращение к свойствам xtfkpi Общие вопросы Javascript 4 14.10.2014 21:30
ООП наследование. Как получить доступ к методам родителя? ShuggyBumblebee Общие вопросы Javascript 5 04.12.2013 00:44
Запрет события Click на дочернем элементе, кот. находится за рамками родителя Smokvin Events/DOM/Window 11 10.11.2013 01:53
Обращение из дочерченного окна к ифрейму родителя cuberboy Javascript под браузер 1 04.05.2011 20:56
Обращение к свойствам grid lastbronetrain ExtJS 19 06.12.2010 23:19