2015-11-20 63 views
1

在我有一個動態的一個tabpanel項目內的負載問題的煎茶觸摸應用工作的TabPanel ..負載動態地從商店物品在煎茶觸摸

代碼視圖:

{ 
       xtype : 'tabpanel', 
       layout : 'card', 
       itemId : 'containerButtons', 
       items : [] 
} 

代碼控制器:

chooseBrands : function(store){ 
var item = {}; 
for(var i = 0; i <store.get('brands').length; i++){ 
    var record = store.get('brands')[i].text; 
    var items = [item]; 
    console.log(i + ' ' + record); 
    item = { 
    title: record 
    }; 
    items.push(item); 
} 
this.getSurveyBrands().setItems(items); 

},

但它是沒有t正常工作,我有同樣的記錄重複很多次,就像是在tabpanel陣列的長度..

此外,我打電話這種方法,而視圖加載和其參考與事件initialize

我在做什麼錯?

預先感謝您。

我找到了解決辦法:

chooseBrands : function(store){ 
    this.getSurveyBrands().removeAll(); 
    var item = {}; 
    for(var i = 0; i <store.get('brands').length; i++){ 
     var record = store.get('brands')[i].text; 
     var items = [item]; 
     item = { 
     title: record 
     }; 
     this.getSurveyBrands().add(item); 
    } 
    }, 

回答

2

var item = {} 

的錯位是問題。現在它在哪裏修改標題始終是相同的對象。這當然會修改所有「副本」的標題(一個對象只不過是一個指向某個內存位置的指針)而將「同一個」對象遍佈整個地方。

如果在循環內創建item對象,它應該可以工作。

chooseBrands : function(store){ 
    var items=[]; 
    for(var i = 0; i <store.get('brands').length; i++){ 
     var record = store.get('brands')[i].text, 
      item = { 
      title: record 
      }; 
     items.push(item); 
    } 
    this.getSurveyBrands().setItems(items); 
} 

但我會建議使用map伎倆保持代碼非常簡單:

chooseBrands: function(store) { 
    this.getSurveyBrands().setItems(
     store.get('brands').map(function(brand) { 
      return {title:brand.text}; 
     }) 
    ); 
} 
+0

謝謝您的幫助,估計!它完美地與你的第二個選項..最好的。 – inane