【发布时间】:2011-11-18 09:03:19
【问题描述】:
(完全重新编辑我之前的帖子)
我正在尝试构建我的第一个 Sencha 触控应用,但遇到了问题。
在我的视口中,我有 2 个 xtype:Home 和 ContainerListAdress。
当我点击ContainerListAdress 图标时,卡片会滑到列表中。
这是我的代码(在 listcard.js 中):
// My List view card
myAPP.views.ListAdressCard = Ext.extend(Ext.List, {
id:'listadresscard',
styleHtmlContent: true,
// cardSwitchAnimation: 'slide',
// items: [{ xtype: 'detailcard' } ],
store: myAPP.ListStore,
itemTpl: '<div>{name}</div>',
grouped: true,
onItemDisclosure: function(){
myAPP.views.containerlistadresscard.setActiveItem('detailcard');
}
});
// My container for both the list and the detail view
myAPP.views.ContainerListAdressCard = Ext.extend(Ext.Panel, {
id: "containerlistadresscard",
iconCls: "search",
styleHtmlContent: true,
cardSwitchAnimation: 'slide',
layout:'card',
items: [{xtype:'listadresscard'}, {xtype:'detailcard'}]
});
Ext.reg('listadresscard', myAPP.views.ListAdressCard);
Ext.reg('containerlistadresscard', myAPP.views.ContainerListAdressCard);
然后在 detailcard.js 我有
DetailcardToolbar = new Ext.Toolbar ({
id:'detailbar',
title: 'station',
dock:'top'
});
myAPP.views.Detailcard = Ext.extend(Ext.Panel, {
id: 'detailcard',
styleHtmlContent: true,
html: 'Made from coffee',
dockedItem:[DetailcardToolbar]
});
Ext.reg('detailcard', myAPP.views.Detailcard);
我的错误是
Uncaught TypeError: Cannot call method 'setActiveItem' of undefined
如果我用骆驼包装的 containerlistadresscard 我得到了
Uncaught TypeError: Object function (){h.apply(this,arguments)} has no method 'setActiveItem'
但是容器中引用了我要设置为活动的详细信息卡?
感谢您的帮助。
---------------编辑------- ---------
为了清楚起见,我决定将所有内容放在一页中,但面临同样的问题
var myAPPDetailcard = new Ext.Panel ({
id: 'detailcard',
styleHtmlContent: true,
html: 'Made from coffee',
layout: 'fit'
});
var myAPPListAdressCard = new Ext.List ({
id:'listadresscard',
styleHtmlContent: true,
store: myAPP.ListStore,
itemTpl: '<div>{name}</div>',
grouped: true,
onItemDisclosure: function(){
myAPP.views.ContainerListAdressCard.setActiveItem(myAPPDetailcard);
}
});
// My container for both the list and the detail view
myAPP.views.ContainerListAdressCard = Ext.extend(Ext.Panel, {
id: "containerlistadresscard",
iconCls: "search",
styleHtmlContent: true,
cardSwitchAnimation: 'slide',
layout:'card',
items: [myAPPListAdressCard, myAPPDetailcard]
});
Ext.reg('containerlistadresscard', myAPP.views.ContainerListAdressCard);
【问题讨论】:
-
你在哪里定义了“myAPP.views.containerlistadresscard”变量?
-
我用 myAPP.views.containerlistadresscard 做的唯一一件事是我在“myAPP.views.Viewport”中将它作为一个 xtype 项目引用。
-
看,你没有定义任何名为“myAPP.views.containerlistadresscard”的元素。您刚刚创建了一个名为“myAPP.views.ContainerListAdressCard”的类,它们并不相同。尝试将 console.log(myAPP.views.containerlistadresscard) 放入“onItemDisclosure”函数并检查你得到了什么。
-
控制台日志返回 'undefined' 我理解你的意思(我是 JS 新手,但在 PHP OOP 方面处于中等水平)。这是 initComponent 的用途吗?加载类?
标签: sencha-touch