2012-05-04 8 views
0

私はユーザーを表すモデルを持っています。ユーザーにはいくつかの個人フィールド(名前、家族)とhasManyという別のモデル(彼の電話など)があります。Sencha touch 2 - DataViewにネストされたモデルを表示

そのような何か:

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'] 
    } 
}); 

今、私は(私が成功しなかったもの)データビューにそれをロードしたいとユーザ情報を表示したいと思い、所属の携帯電話の、リストユーザが電話をタップしたときにレイアウト(またはメッセージなど)を使用して表示する場合

問題は、itemtapを使用すると、ユーザー情報とすべての電話を含めて、私は本当に電話がタップされたのか分かりません。

ユーザー情報を表示するには、情報を表示するitemTplを使用して、すべての電話機を一覧表示します。

どのように携帯電話がタップされたのか分かりますか?

ありがとうございます! ローマ字

答えて

0

phonesuserRecord.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); 
       } 
      } 
     }); 
    } 
}); 
+0

:)感謝。 – Roman

+0

各divにデータ属性を追加しました。つまり、DOMオブジェクトを取得したときに、選択したレコードを知ることができました – Roman

関連する問題