2012-05-25 53 views
0

下面的代碼用於main視圖,即main.js,其中我調用了intro.js,即另一個視圖。現在我無法在模板上呈現數據。我是新來的sencha,我想我搞砸了一些聲明sencha mvc模板模板

Ext.define("casta.view.Main", { 
    extend: 'Ext.tab.Panel', 
    apitoken:'NULL', 
    requires: [ 
     'Ext.TitleBar', 
     'Ext.Video', 
     'casta.view.Intro' 

    ], 
    config: { 
     tabBarPosition: 'top', 

     items: [ 


       { title:'Intro', 
        xclass: 'casta.view.Intro' , 
        iconCls:'user' 
       } 

       ] 
    } 
}); 

intro.js如下。我想在聲明變量的時候我搞砸了一些東西。它顯示黑屏

Ext.define('casta.view.Intro', { 
extend: 'Ext.tab.Panel', 
//alias: 'widget.currentDate', //this makes it xtype 'currentDate' 
//store: 'CurrentDateStore', 


initComponent: function(){ 
    planetEarth = { name: "Earth", mass: 1.00 }; 

    tpl = new Ext.Template(['<tpl for".">', '<p> {name} </p>', '</tpl>'].join('')); 
    tpl.compile(); 
    //this.callParent(arguments); 

}, 
html:tpl.apply(planetEarth) 
}); 
以下

在控制檯日誌

tpl is not defined 

[打破這個錯誤]

html:tpl.apply(planetEarth) 
+0

你是否在鍍鉻上咀嚼?如果是,可以提供控制檯日誌嗎? –

+0

是的,請檢查更新後的問題' – sumit

回答

1

initComponent會在HTML VAR一段時間後,被稱爲已設置。而不是定義TPL像這樣:

Ext.define('casta.view.Intro', { 
    extend: 'Ext.tab.Panel', 
    tpl: '<p> {name} </p>', 
    initComponent: function(){ 
     //Be sure to use the var keyword for planet earth, otherwise its declared as a global variable 
     var planetEarth = { name: "Earth", mass: 1.00 }; 
     this.setHtml(this.getTpl().apply(planetEarth)); 
    } 
}); 

這將工作,按照你的模式,但你可能要定義組件的更多,像這樣:

Ext.define('casta.view.Intro', { 
    extend: 'Ext.Container', 
    tpl: '<p> {name} </p>' 
}); 

然後實例是這樣的:

Ext.define("casta.view.Main", { 
    extend : 'Ext.tab.Panel', 
    apitoken : 'NULL', 
    requires : ['Ext.TitleBar', 'Ext.Video', 'casta.view.Intro'], 
    config : { 
     tabBarPosition : 'top', 
     items : [{ 
      xclass : 'casta.view.Intro', 
      title : 'Intro', 
      iconCls : 'user', 
      data: {name: "Earth", mass: 1.00 } 
      }] 
    } 
});