0

我有一个代表用户的模型。用户有一些个人字段(姓名、家庭)和另一个 Model 作为 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,然后列出所有电话。

那么 - 我怎么知道什么电话被窃听了?

谢谢!罗马

4

1 回答 1

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);
                }
            }
        });
    }
});
于 2012-05-04T22:58:10.170 回答