我有一个代表用户的模型。用户有一些个人字段(姓名,家庭)和另一个模型,如hasMany(例如他的手机)。
类似的东西:
Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
config: {
fields: ['ID', 'Name', 'Family'],
hasMany: { model: 'MyApp.model.Phone', name: 'Phones', associationKey: 'phones' }
}
});
Ext.define('MyApp.model.Phone', {
extend: 'Ext.data.Model',
config: {
fields: ['ID', 'Phone', 'Type']
}
});
现在,我想将它加载到数据视图(我成功完成),并希望显示用户信息,然后显示属于他的电话列表以及用户点击手机时 - 显示它使用布局(或消息,或任何东西 - 重点是得到它的ID)
问题在于,当我使用itemtap时,它会获得整个记录,包括用户信息和所有手机 - 所以我真的不知道手机是什么用的。
要显示用户信息,我只需使用显示信息的itemTpl,然后列出所有手机。
那么 - 我怎么知道手机被点击了什么?
谢谢! 罗马
答案 0 :(得分:0)
除非您将phones
(userRecord.phones()
)商店直接绑定到数据视图,否则没有干净的方法可以执行此操作。相反,您需要获得itemtap
事件的目标并检查它是什么元素。
itemtap: function(me, index, target, record, e) {
var el = Ext.get(e.target);
alert(el.dom.innerHTML);
}
完整示例:
Ext.application({
name: 'Sencha',
launch: function() {
Ext.create('Ext.DataView', {
fullscreen: true,
store: {
fields: ['name'],
data: [
{ name: 'one' },
{ name: 'two' }
]
},
itemTpl: '{name} <span>tap me</span>',
listeners: {
itemtap: function(me, index, target, record, e) {
var el = Ext.get(e.target);
alert(el.dom.innerHTML);
}
}
});
}
});