2012-12-12 220 views
0

商店對象通過ajax請求動態加載。在控制檯中進行調試時,我可以看到商店對象被填充記錄,但是列表爲空。Sencha Touch 2.空列表

代碼:

口的視圖

Ext.define('sample.views.Viewport', { 
    extend: 'Ext.tab.Panel', 

    title: 'Hello world!', 

    xtype: 'viewport', 

    config: { 
     fullscreen: true, 

     tabBar: { 
      docked: 'bottom', 
     }, 

     items: [ 
      { xclass: 'sample.views.wares.lists.Popular' }, 
     ] 
    } 
}); 

NavigationView視圖

Ext.define('sample.view.wares.lists.Popular', { 
    extend: 'Ext.NavigationView', 

    xtype: 'Popular', 

    config: {  
     iconCls: 'home', 
     title: 'Pop. prekės', 

     items: [ 
      { 
       xtype: 'wares',               
      } 
     ] 
    } 
}); 

列表視圖

Ext.define('sample.views.wares.lists.List', { 
    extend: 'Ext.List', 

    xtype: 'wares', 

    config: { 
     store: 'Wares', 
     itemTpl: '{Name}' 
    }, 

    initialize: function() { 
     this.config.title = sample.app.title; 
    } 
});  

的記錄存儲對象這是動態通過Ajax重新加載尋求。

Ext.define('sample.store.Wares', { 
    extend: 'Ext.data.Store', 

    config: { 
     model: "sample.models.WaresListItem" 
    } 
}); 

Result in Ripple emulator

回答

1
initialize: function() { 
    this.config.title = sample.app.title; 
    this.callParent(); 
} 

「this.callParent()」是非常重要的,如果你有初始化函數,因爲它調用父(在你的情況「Ext.dataview.List」),並要求它做的某些默認事情必須要List來構造。這與在java中從構造函數調用super類似。

如果你可以移動到這個聲明塊

this.config.title = sample.app.title; 

,並像這樣做

config: { 
    store: 'Wares', 
    itemTpl: '{Name}', 
    title: sample.app.title 
}, 

你就不需要仍然初始化塊共

2

大多數的時候,你看不到的內部組件,那是因爲你還沒有定義其容器的佈局。

嘗試將佈局添加到您的導航視圖的配置如下圖所示:

​​

希望這有助於

另見:RDougan的答案在這裏:在官方How do I make a dataview.list visible in Sencha Touch 2?

+0

相同的結果。佈局配置不影響顯示列表。 –

0

幾次審查示例應用程序通過在initialize函數中調用callParent函數解決了文檔和問題。不知道爲什麼。

initialize: function() { 
    this.config.title = sample.app.title; 
    this.callParent(); 
}