2013-08-16 72 views
0

我有一個小問題來獲取我的樹在控制器中的實例。那麼,沒有MVC模式,它看起來像這樣,它工作正常。如何在控制器中獲取樹實例 - 分機4

var tree = Ext.create('Ext.tree.Panel', { 
    tbar : [{ 
     text : 'Delete', 
      handler : function() { 
       var record = tree.getSelectionModel().getSelection()[0]; 
       record.remove(true); 
       tree.getView().refresh(); 
      } 
    }] 
}); 

然後我創建了MVC模式,我想獲得該樹的參考,這樣我就能夠調用的方法getSelectionModel()等(像什麼,我做了上面的代碼)。

Ext.define("MyApp.controller.GridPanelTreeController", { 
    views: ["GridPanelTree"], 
    refs : [{ 
     ref: "controllerDataSelector", 
     selector: "tree" 
    }], 

    init: function(){ 
     this.control({ 
      "toolbar button[action=delete] " : { 
       click : this.delete 
      } 
     }); 
    }, 

    delete : function() { 
     /* this returns an error, that tree is undefined*/ 
     var tree = this.getControllerDataSelector(); 
     var record = tree.getSelectionModel().getSelection()[0]; 

     /* this returns an error, that TypeError: tree.getSelectionModel is not a function */ 
     var tree = this.getGridPanelTreeView(); 
     var record = tree.getSelectionModel().getSelection()[0]; 
    }  

我不知道爲什麼它不能正常工作。如何解決這個問題呢?

+0

只是FYI,'delete'是一個javascript關鍵字,您不應該將它用作函數的名稱。 – kevhender

+0

不,我只是更改函數名稱,它仍然無法按預期方式工作。 –

+0

將'action'屬性添加到按鈕 – MMT

回答

0

您需要查看函數的參數。

delete : function(btn) { 

    var tree = btn.scope; 
    var record = tree.getSelectionModel().getSelection()[0]; 


} 
相關問題