我正在使用MVC示例here,并绕过了PhoneGap联系人数据并将其替换为我自己的模型和商店。当我向面板添加列表时,我将其指向myApp.stores.products。列表是DataView,因此需要tpl
,store
和itemSelector
,但该示例省略itemSelector
并使用itemTpl
而不是tpl
} ...
items: [{
xtype: 'list',
store: myApp.stores.products,
itemTpl: '{productName}',
onItemDisclosure: function (record) {
//Ext.dispatch({
// controller: myApp.controllers.products,
// action: 'show',
// id: record.getId()
//});
}
}]
当然,我收到如下控制台警告:
未捕获的DataView需要定义tpl,store和itemSelector配置。
因此,我将配置更改为我应该知道的配置,现在出现错误......
items: [{
xtype: 'list',
store: myApp.stores.products,
tpl: '{productName}',
itemSelector: 'div.productView',
onItemDisclosure: function (record) {
//Ext.dispatch({
// controller: myApp.controllers.products,
// action: 'show',
// id: record.getId()
//});
}
}]
未捕获错误:Ext.List:itemTpl是必需的配置。
那么,这是什么? itemTpl或tpl?为什么Ext.List不知道使用哪个?我甚至尝试添加tpl
和itemTpl
,只是为了安全起见,仍然是上面两个错误中的第一个。
注意: 这就是面板环境中的样子:
myApp.views.ProductList = Ext.extend(Ext.Panel, {
dockedItems: [{
xtype: 'toolbar',
title: 'Products'
}],
items: [{
xtype: 'list',
store: myApp.stores.products,
tpl: '{productName}',
itemSelector: 'div.productView',
onItemDisclosure: function (record) {
//Ext.dispatch({
// controller: myApp.controllers.products,
// action: 'show',
// id: record.getId()
//});
}
}],
initComponent: function() {
myApp.stores.products.load();
myApp.views.ProductList.superclass.initComponent.apply(this, arguments);
}
});
更新 我认为这是对initComponent.apply()...
的抨击myApp.views.ProductList.superclass.initComponent.apply(this, arguments);
答案 0 :(得分:1)
好。在Sencha Touch initComponent函数中放置一个断点,我发现它根本与tpl或itemTpl无关。不知何故,我的商店未定义。现在进入一个新的神秘......
在创建此面板和列表时,商店未定义。因此,最终修复最终切换了.js文件包含在index.html中的顺序。现在就像一个幸运的魅力。
答案 1 :(得分:1)
我遇到了同样的问题,但对我来说问题来自于用于调用代理的变量名称中存在错误的事实:当需要小写时我设置了大写。 使用您的代码:我使用 myApp.stores.Products 而不是 myApp.stores.products 。
但是需要时间才能找到......