2014-09-22 96 views
0

我想將數據(數組)添加到sencha列表中。我無法綁定數據。不確定列表是否未刷新或數據未添加到列表中。將數據加載到Sencha列表中

我的商店:

Ext.define("ListDemoApp.store.ListDemoStore", { 
    extend: "Ext.data.Store", 

    config: { 
     storeId: 'listdemostore', 
     model: "ListDemoApp.model.ListDemoModel" 
    } 
}); 

我的模型:

Ext.define("ListDemoApp.model.ListDemoModel", { 
    extend: "Ext.data.Model", 
    config: { 
     fields: ["name"] 
    } 
}); 

我的MainView:

Ext.define('ListDemoApp.view.Main', { 
    extend: 'Ext.Panel', 
    xtype: 'main', 
    id:'vwmain', 
    requires: [ 
     'Ext.TitleBar', 
     'Ext.Video' 
    ], 
    config: { 
     tabBarPosition: 'bottom', 

     items: [ 
      { 
       xtype: 'button', 
       id: 'listdemobtn', 
       text:'Load Data' 
      } 
     ] 
    } 
}); 

MyListView:

Ext.define("ListDemoApp.view.DemoListView", { 
    extend: 'Ext.Panel', 
    xtype: 'demolistview', 
    id: 'vwdemolist', 
    requires: [ 
     'Ext.dataview.List', 
     'Ext.XTemplate', 
     'ListDemoApp.store.ListDemoStore' 
    ], 
    config: { 
     items: [ 
      { 
       xtype: 'label', 
       html: 'testing...', 
       id: 'lblsml' 
      }, 
      { 
       xtype: 'list', 
       id: 'namelist', 
       itemTpl: "{name}" 
      } 
     ] 
    } 
}); 

和我的控制器:

Ext.define("ListDemoApp.controller.ListDemoController", 
    { 
     extend: "Ext.app.Controller", 
     config: { 
      refs: { 
       'mainvw': '#vwMain', 
       'demoList': '#vwdemolist' 
      }, 
      control: { 
       '#listdemobtn': 
        { 
         tap: 'store' 
        } 
      } 
     }, 
     store: function() { 
      //var dataresult; 
      var group_store = Ext.getStore("listdemostore"); 
      var demodata = [{ "name": "AAA" }, { "name": "BBB" }, { "name": "CCC" }] 
      if (this.getDemoList() == undefined) { 
       Ext.Viewport.setActiveItem({ xtype: "demolistview", id: "vwdemolist" }); 
      } 
      else { 
       Ext.Viewport.setActiveItem(this.getDemoList()); 
      } 

      var lst = Ext.getCmp('namelist'); 
      var lbl = Ext.getCmp('lblsml'); 
      lbl.setHtml(demodata[0]['name']); 
      //lst.setStore(null); 
      //lst.setData(demodata); 
      group_store.add(demodata); 
      //group_store.load(); 
      lst.setStore(group_store); 
      //lst.refresh(); 
      //// lst.setData(demodata); 
     } 
    }); 

的數據未綁定到列表中。我能夠從數組中設置標籤html,但無法綁定列表。

任何幫助將不勝感激。

+0

您需要設置佈局:'fit'以便將列表提取到您的父類中。您還需要將商店名稱添加到列表中。 – 2014-09-22 12:20:14

回答

1

請參考此代碼,它可能會幫助你。 (我已經在評論中解釋過了)

Ext.define("ListDemoApp.view.DemoListView", { 
    extend: 'Ext.Panel', 
    xtype: 'demolistview', 
    id: 'vwdemolist', 
    requires: [ 
     'Ext.dataview.List', 
     'Ext.XTemplate', 
     'ListDemoApp.store.ListDemoStore' 
    ], 
    config: { 
     layout:'fit' 
     items: [ 
      { 
       xtype: 'label', 
       html: 'testing...', 
       id: 'lblsml' 
      }, 
      { 
       xtype: 'list', 
       id: 'namelist', 
       itemTpl: '{name}', 
       store:'ListDemoStore' 
      } 
     ] 
    } 
}); 
+0

工作正常。它重疊標籤 – Selva 2014-09-22 12:35:27

+0

,你需要用CSS來擺弄。嘗試使用labelCls作爲標籤,否則使用flex屬性或設置一些高度以使用'height'配置標籤。 – 2014-09-22 12:37:00

+0

ya。 thanx的答案 – Selva 2014-09-22 12:40:02