在 sencha Touch 中将商店中的项目动态加载到选项卡面板
Load dynamically items from store to tabpanel in sencha Touch
在 Sencha touch 应用程序中工作时,我在动态加载选项卡面板内的项目时遇到问题..
视图中的代码:
{
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);
},
但它无法正常工作,我重复了很多次相同的记录,例如选项卡面板中数组的长度..
此外,我在加载视图时调用此方法,并且它的引用与事件有关 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);
}
},
错位
var item = {}
是问题所在。现在在哪里,总是和你修改标题的地方一样object。这当然会修改所有 "copies" 的标题(object 只不过是指向某个内存位置的指针) "same" object 到处都是。
如果您在循环内创建 item
object,它应该可以工作。
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};
})
);
}
在 Sencha touch 应用程序中工作时,我在动态加载选项卡面板内的项目时遇到问题..
视图中的代码:
{
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);
},
但它无法正常工作,我重复了很多次相同的记录,例如选项卡面板中数组的长度..
此外,我在加载视图时调用此方法,并且它的引用与事件有关 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);
}
},
错位
var item = {}
是问题所在。现在在哪里,总是和你修改标题的地方一样object。这当然会修改所有 "copies" 的标题(object 只不过是指向某个内存位置的指针) "same" object 到处都是。
如果您在循环内创建 item
object,它应该可以工作。
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};
})
);
}