2012-06-26 32 views
1

我試圖設置一個確認消息推註銷按鈕,其中如果用戶點擊'是'然後被重定向到在名爲'myContainer'的容器中進行面板控制。該消息顯示正常,但是當我選擇'是'時出現錯誤(假設因爲容器未初始化)。我在控制器上爲容器設置了一個參考,但這似乎沒有幫助。任何建議如何正確處理確認,這是值得讚賞的。感謝Ext.Msg.confirm - 對象[對象窗口]沒有方法'...'

確認消息:在控制器

onLogoutTap: function(button, e, options) { 
Ext.Msg.confirm("Logout", "Do you wish to continue?", function(button){ 
    if (button == 'yes') { 
    //doesn't work: 
     this.getMyContainer().setActiveItem(1); 
    } else { 
     return false; 
    } 
}); 
} 

myContainer中參考

myContainer: '#myContainer' 

錯誤消息:

Uncaught TypeError: Object [object Window] has no method 'getMyContainer' 

回答

5

一個小技巧,我經常用的就是這個

onLogoutTap: function(button, e, options) { 
    var controller = this; 
    Ext.Msg.confirm("Logout", "Do you wish to continue?", function (button) { 
    if (button == 'yes') { 
    //doesn't work: 
     controller.getMyContainer().setActiveItem(1); 
    } else { 
     return false; 
    } 
    }); 
} 

像這樣,你仍然可以用關鍵字this訪問函數對象。

希望這有助於

+0

很好用,謝謝 – Arkady

1

這裏:

function(button){ 
    if (button == 'yes') { 
    //doesn't work: 
     this.getMyContainer().setActiveItem(1); 
    } else { 
     return false; 
    } 

this引用你的函數對象,而不是控制器。

如果你想打電話給你的控制器的這種方法,嘗試:

Ext.getApplication().getController("your_controller_name").getMyContainer();

希望它能幫助。

0

另一種方式是

onLogoutTap: function(button, e, options) { 
    Ext.Msg.confirm("Logout", "Do you wish to continue?", function(button){ 
     if (button == 'yes') { 
     //DOES WORK!! 
      this.getMyContainer().setActiveItem(1); 
     } else { 
      return false; 
     } 
    }, this); 
} 

剛過添加函數定義的 '範圍' 參數。

+0

感謝您提供這種替代方案 – Arkady

相關問題