我想创建一个带有引用列表中特定项的引用的控制器,这可能吗?
所以我真的需要ComponentQuery引用一个listitem。我在列表中设置内联数据:
Ext.define('MyApp.view.MyView', {
extend : 'Ext.List',
alias : 'widget.mylist',
config : {
title : 'Title',
itemTpl : ['{displayName}'].join(''),
data : [{
displayName : 'One',
id : 1
}, {
displayName : 'Two',
id : 2
}, {
displayName : 'Three',
id : 3
}, {
displayName : 'Four',
id : 4
}]
}
});
然后在我的控制器中(这显然不起作用):
refs : {
oneListItem: 'mylist.list[id=1]',
twoListItem: 'mylist.list[id=2]',
threeListItem: 'mylist.list[id=3]',
fourListItem: 'mylist.list[id=4]'
}
希望这是可能的。如果不是,我可以在列表上听一个'itemtap'并从那里调用一个方法,但是,我宁愿不必为了清洁而这样做。
提前致谢。
布拉德
答案 0 :(得分:1)
首先:将id
添加到数据部分中的对象不会产生任何影响,这只是在您之前指定的itemTpl
中取代和替换的数据。
关于你的问题:Sencha Touch 2文档没有提到让Ext.ComponentQuery
选择Component
的第n个孩子的方法,因此,假设您想要使用内联创建列表对象数据,我看到的唯一方法是使用Sencha在创建时自动应用于每个listItem的id
。
这些ID属于#ext-listitem-1
类,请参阅此Sencha Fiddle demo中如何使用它们的示例。
这是一种不好的做法,因为你不能依赖那些id,例如,如果你向你的应用程序添加另一个列表,他们就可以改变你的代码。
我没有看到为什么你不应该使用itemtap来对列表进行操作的任何正当理由,因为在事件中你获得了操作正确列表项所需的所有数据:
itemtap( this, index, target, record, e, eOpts )
为了完整起见,我必须提到您还可以使用Ext.dataview.List.add()动态添加项目,这样您就可以使用自定义{{1}创建dataitems
}。
答案 1 :(得分:0)
如果您想要处理第一个或最后一个项目,可以尝试Ext.select('.x-list-item-first');
或Ext.select('.x-list-item-last');
。我建议您将xtype设置为“mylist”而不是使用别名。