Почему избыточные аргументы передаются функции this.on в extjs? - PullRequest
0 голосов
/ 01 февраля 2011

Внутри определенного компонента, это существующий код, который я вижу:

this.on('afterrender',function(cmp){
this.somePanel.someTabPanel.setAsUnSelected(); 
},this);

Мои вопросы: Что такое cmp? Это не стандартная вещь, как btn или e ... не так ли? Кроме того, какой смысл проходить в последнем 'this' объекте? Логика, содержащаяся в this.somePanel.someTabPanel.setAsUnSelected();, должна выполняться после рендеринга .. так почему мы передаем arg 'this' в функцию on после выполнения функции?

1 Ответ

0 голосов
/ 01 февраля 2011

Вы действительно должны посмотреть на документацию API: http://dev.sencha.com/deploy/dev/docs/

Если это событие было для EditorGridPanel (http://dev.sencha.com/deploy/dev/docs/?class=Ext.grid.EditorGridPanel), оно показывает, что передан Ext.Component. Имя переменной 'cmp' - это просто имя - оно не имеет реального значения. В этом случае, это просто относится к компоненту, который передается (сетка редактора в этом случае). Для этого же EditorGridPanel (или любого другого компонента, который вы используете) посмотрите определение метода для 'on':

on( String eventName, Function handler, [Object scope], [Object options] ) : void

Требуется eventName: 'afterrender', обработчик функции: ваша "функция (cmp) {...}, а следующий параметр - это" область действия ", в которой вызывается функция. В этом случае область действия "this". Как и во всех функциях javascript, вы можете оставить более поздние аргументы выключенными (вам не нужно передавать "this", если вам это не нужно)

Может быть, если я переформатирую ваш сценарий, он будет более понятным:

this.on(
  'afterrender',  //this is the first parameter passed to the 'on' method
  function(cmp) {
    this.somePanel.someTabPanel.setAsUnSelected(); 
  },  //the function that will be called (after rendering) is the 2nd parameter
  this //this is 3rd argument that the "on" method takes, the "scope that the function is called in
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...