【问题标题】:How to catch tree node clicks from a (MVC) controller in ExtJs 4?如何从 ExtJs 4 中的(MVC)控制器捕获树节点点击?
【发布时间】:2011-07-29 20:18:01
【问题描述】:

在我的 ExtJS 4 控制器中,我可以捕获页面上某些元素的事件。 例如,要捕获菜单项点击,我可以这样做:

init: function() { 
    this.control({
        'maintoolbar menuitem[action=contacts]': {
            click: function() {
                                // do something ;
                            }
                    }
            }).......

我如何做同样的事情来捕捉树节点点击?我非常想要与菜单项相同的效果(树的 id 为 settingstree)。

编辑:这是树代码:

Ext.define('MyApp.view.system.SettingsTree',{
    extend: 'Ext.tree.Panel',
    requires: [ 
            'Ext.data.TreeStore',
            'MyApp.store.SettingsTree',
    ],
    title: MyApp.locale.T('settings'),
    defaults: {
            expanded:true
    }, 
    id:'settingstree',
    store: Ext.create('MyApp.store.SettingsTree'),
    alias: 'widget.settingstree',
    rootVisible: false,
    useArrows: true,
    /*listeners: {
            itemclick: function(view, record, el, index, ev, options ) {
                    console.log(arguments);
            }
    }*/
 });

请注意,我有意注释掉了 itemclick 监听器。虽然这确实报告了我点击了所有节点,但我更喜欢在控制器中捕获它,因为我应该......

有什么想法吗?

谢谢!

【问题讨论】:

  • 如果您可以分享构建树的代码将会很有帮助:)
  • Lionel,将树代码添加到问题中。

标签: javascript extjs extjs4 extjs-mvc


【解决方案1】:

你可以放:

this.control({
        'settingstree': {
            itemclick: function() {
                                // do something ;
                            }
                    }
            })

在适当的控制器中

【讨论】:

  • 谢谢!我几乎拥有它,但正在尝试使用“click”而不是“itemclick”。我希望获得与将操作发送到控制器的菜单项类似的行为,但我通过向模型添加属性“操作”并从记录中获取它来模仿这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多