Как вызвать функцию «прародитель» класса в extjs? - PullRequest
0 голосов
/ 14 ноября 2011

У меня проблемы с пониманием областей действия в javascript. Предположим, у меня есть следующий код:

 Ext.define('MA.controller.user',{
   extend : 'Ext.app.Controller',
   editUser:function(){},
   updateUser : function() {
     Ext.Ajax.request({
       url : './editall',
       callback : function(options, success, response) {
         this.editUser();
       }
     })
   }//eof init
 })//eof class

Как видите, this.editUser () вложен в Ext.Ajax.request и updateUser

this.editUser () вернет undefined. Как я могу вызвать editUser внутри обратного вызова?

1 Ответ

1 голос
/ 14 ноября 2011

Это просто вопрос сферы. В методе updateUser область действия является контроллером, поэтому для вызова editUser внутри обратного вызова просто добавьте область действия в запрос ajax

Ext.define('MA.controller.user',{
 extend : 'Ext.app.Controller',
 editUser:function(){},
 updateUser : function() {
   //here this refers to the controller
   Ext.Ajax.request({
     url : './editall',
     scope: this, // add the scope as the controller
     callback : function(options, success, response) {
       this.editUser();
     }
   })
 }//eof init
 })//eof class
...