0

我有一个清单:

Ext.define('my.view.ProgramList', {
  extend: 'Ext.dataview.List',
  xtype: 'programlist',
  ...
}

我希望这个列表成为两个导航视图的起点:

Ext.define("my.view.ProgramNavigationView", {
  extend: 'Ext.navigation.View',
  xtype: 'programnavigationview',
  ...
  items: [{
    xtype: 'programlist',
    itemId: 'programlist'
  }]
}

Ext.define("my.view.FacebookNavigationView", {
  extend: 'Ext.navigation.View',
  xtype: 'facebooknavigationview',
  ...
  items: [{
    xtype: 'programlist',
    itemId: 'programlist'
  }]
}

问题:如何处理控制器中的点击事件并分别处理两者?在我的控制器中,我有:

refs: {
    programlist: 'programlist',
    facebooknavigationview: 'facebooknavigationview',
    programnavigationview: 'programnavigationview', ...
},

我试过这个:

control: {
  programlist: {
    initialize: 'initProgramData'
  },
  facebooknavigationview: {
    itemtap: 'showFacebookGroup'
  },
  programnavigationview: {
    itemtap: 'showProgramData'
  },

希望itemtap会冒泡,我可以在facebooknavigationview与programnavigationview中进行不同的处理,但事实并非如此。我可以将 itemtap 放在程序列表中并触发它,但是我无法区分两个导航视图之间的区别;我不知道我是否可以搜索层次结构,但这似乎有点……丑陋。我错过了什么?

4

1 回答 1

1

您可以添加使用父级的 ref 来帮助区分水龙头的来源,例如,如果您有以下视图:

Ext.define("my.view.ProgramNavigationView", {
  extend: 'Ext.navigation.View',
  xtype: 'programnavigationview',
  ...
  items: [{
    xtype: 'programlist',
    itemId: 'programlist'
  }]
}

Ext.define("my.view.FacebookNavigationView", {
  extend: 'Ext.navigation.View',
  xtype: 'facebooknavigationview',
  ...
  items: [{
    xtype: 'programlist',
    itemId: 'programlist'
  }]
}

您可以使用以下参考文献:

refs: {
    programlist: 'programlist',
    facebooknavigationview: 'facebooknavigationview programlist',
    programnavigationview: 'programnavigationview programlist', ...
},
control: {
  programlist: {
    initialize: 'initProgramData'
  },
  facebooknavigationview: {
    itemtap: 'showFacebookGroup'
  },
  programnavigationview: {
    itemtap: 'showProgramData'
  },

现在,当项目点击显示在父视图中时,它们正在侦听。

于 2013-03-25T06:34:51.903 回答