Javascript-форум (https://javascript.ru/forum/)
-   Dojo toolkit (https://javascript.ru/forum/dojotoolkit/)
-   -   не понимаю как задать правильный контекст (https://javascript.ru/forum/dojotoolkit/12608-ne-ponimayu-kak-zadat-pravilnyjj-kontekst.html)

loz 25.10.2010 22:36

не понимаю как задать правильный контекст
 
Здраствуйте.. подскажите, пожалуйста, где я лаганулся.. буду очень признателен..
есть такой код...

dojo.declare('someclass', null, {
	constructor: function() {				
		this._connect();
	}, /* constructor */
	
	_connect: function() {		
		dojo.query('.slider-see-details', 'slider').onclick(function(evt) {
			console.log(this, 'this');
			this._insHtml();			
			
		});
	}, /* _connect */
	
	_insHtml: function() {
		console.log('hello world');		
	} /* _insHtml */
});


проблема в следующим... в первом консол.логе, там где ссылка на this, выводится елемент дом дерева, а не текущего класа, я так понял, что это происходит потому-что this ссылается на контекст dojo.query(), а не на контекст класа someclass. Как можно визвать из контекста dojo.query() метод someclass._insHtml????
помогите, пожалуйста, ибо вопрос у меня этот уже возникает не первый раз, а ответа все не нахожу.. заранее спасибо..

loz 26.10.2010 16:07

вот подсказали на другом форуме:
доджовский метод...
dojo.query('.slider-see-details', 'slider').onclick(dojo.hitch(this, function(evt) {
    console.log(this, 'this');
    this._insHtml();           
}));


и без доджо...
var self = this;
dojo.query('.slider-see-details', 'slider').onclick(function(evt) {
    console.log(self, 'self');
    self._insHtml();           
});


может кому пригодится, у кого, может, будет такае же проблема...

Толя 17.02.2011 18:36

так же можно это было решить третьим способом
_connect: function() {
   var self = this;     
   dojo.query('.slider-see-details', 'slider').onclick(function(evt) {
      console.log(self, 'this');
      self._insHtml();           
   });
 }, /* _connect */


Часовой пояс GMT +3, время: 10:46.