Ext JS - 如何将参数传递给视图中控制器中的侦听器

时间:2016-02-09 15:08:41

标签: javascript extjs extjs5

我有一个观点 - 基本上是一个小组...... 我有菜单按钮.....按钮内的4个菜单...我想每次调用控制器中存在的一个特定功能,但参数不同......怎么可能?

xtype: 'button',
menu: {
  items: [{
    text : 'menu 1',
    listeners: {
       click: 'controllerfunction' //with argument 1
    }
  }, {
   text : 'menu 2',
    listeners: {
       click: 'controllerfunction' // with argument 2
    }
  }]
}

2 个答案:

答案 0 :(得分:10)

亚历山大的方式有效,但还有另一种方式与你使用的风格相同。

xtype: 'button',
menu: {
  items: [{
    text : 'menu 1',
    listeners: {
       click: {fn: 'controllerfunction', extraArg: 'yes'}}
    }
  }, {
   text : 'menu 2',
    listeners: {
       click: {fn: 'controllerfunction', extraArg: 'no'}}
    }
  }]
}

// In your controller
controllerFunction: function(event, target,options) {
    if (options.extraArg === 'yes') {

    }
}

请参阅https://fiddle.sencha.com/#fiddle/15c7

答案 1 :(得分:5)

我使用以下内容:

xtype: 'button',
xtypeToOpen:'listView', // This is the argument.
id: 'btnListView',
text: 'List'

xtype: 'button',
xtypeToOpen:'gridView', // This is the argument.
id: 'btnGridView',
text: 'Grid'

'button[id$=View]': {
    click: this.onClickViewBtn
},

onClickViewBtn: function(btn) {
    var centerContainer = this.getCenterContainer(),
        item = centerContainer.down(btn.xtypeToOpen); // Here I use the argument.
    ...
}