2011-10-28 33 views
0

我想從我的控制器得到一個視圖的引用在煎茶觸摸2. 我跟着這個問題的解釋: Getting a refernce to an auto-instantiated Sencha Touch 2 view煎茶觸摸2:開始自動實例化視圖的引用

但是,我的控制器中的this.control中的render和show函數永遠不會被調用。

這是我的app.js:

Ext.application({ 

    name: 'App', 
    appFolder: 'src', 
    controllers: ['Home'], 

    launch: function() { 
    Ext.Viewport.setActiveItem({xtype: 'homeView'}); 
    } 
}); 

這是我的看法:

Ext.define('App.view.HomeView', { 

    extend: 'Ext.Panel', 
    alias : 'widget.homeView', 

    config: { 
     html : ['<h1>Sencha Touch Web App</h1>'] 
    }, 

    initialize: function() { 

     this.callParent(); 
    } 

}); 

,這是我的控制器:

Ext.define('App.controller.Home', { 

    extend  : 'Ext.app.Controller', 
    views  : ['HomeView'], 

init: function() { 

    this.control({ 

     'homeView' : { 

      render: function() { 
       console.log('Render method called!'); 
      }, 
      show: function() { 
       console.log('Show method called!'); 
      } 
     } 
    }) 
    } 
}); 

沒有人有任何想法我什麼做錯了嗎?

非常感謝。 Franziska

回答

1

render處理函數也不會被我調用。我這樣做的方式是使用show,這將在每次顯示組件時調用,或者在視圖初始化時使用自定義事件,例如,

Ext.define('App.view.HomeView', { 

    extend: 'Ext.Panel', 
    alias : 'widget.homeView', 

    config: { 
     html : ['<h1>Sencha Touch Web App</h1>'] 
    }, 

    initialize: function() { 
     this.fireEvent('render'); 
     this.callParent(); 
    } 

}); 
+0

感謝您的快速響應。但是,如何在我的控制器中註冊事件?我嘗試了'this.addEvents','listeners'和'this.config'。它沒有工作。即使是'show'處理程序仍然不起作用,儘管它似乎適用於您。您是否有我的例子? – Ioquai

+0

在控制器中,你應該能夠執行'this.control({homeView:{render:function(){console.log('rendering');}}})' –

+0

我設法得到渲染處理程序工作。雖然表演處理程序仍然沒有被解僱,但對我的需求來說很好。謝謝你的幫助。 – Ioquai