0

ExtJS 4.1 和 DeftJS 0.6.8

文件说"References to view components can be established via the control annotation and view-relative component query selectors"

文档示例:

control: {
        submitButton: 'panel > button[text="Submit"]'
    }

因此,在我的情况下,我想访问这样嵌套的菜单按钮:

  ...
  extend: 'Ext.tree.Panel',
  lid: 'mytreepanel',

  dockedItems: [{
     xtype: 'toolbar',
     lid: 'mybbar',
     items: [{
        xtype: 'splitbutton',
        lid: 'mysplitbutton',
        menu: {
           lid: 'mymenu',
           items: [{
              lid: 'createFolder',
              text: 'Create folder',
           }]
        }
     }]
  }]

我的尝试:

control: {
         createFolder: {
            selector : '[lid=createFolder]',
         // selector : 'menu[lid=createFolder]',
         // selector : 'mytreepanel > menu[lid=createFolder]',
         // selector : 'treepanel > toolbar > splitbutton > menu[lid=createFolder]',
            listeners: {
               click: 'createFolder'
            }
         }
}

没有任何效果。谁能指出我正确的方向?

4

2 回答 2

0

我不知道您在哪个文档中找到了您的示例 ( control: { submitButton: 'panel > button[text="Submit"]' }),但它对我根本不起作用。

通过遵循sencha 文档,我创建了以下控制器类:

Ext.define('Pandora.controller.Main', {
    extend: 'Ext.app.Controller',

    init: function() {
        this.control({
            '[lid=mytreepanel] menu[lid=mymenu] menuitem[lid=createFolder]': {
                click: function(){ alert(123); }
            }
        });
    }
});

有了这个control点击的定义是有效的。还要注意如何附加点击处理程序。您必须提供回调,而不是字符串。

于 2012-12-13T10:19:01.797 回答
0

解决方案是添加mixins: ['Deft.mixin.Controllable']我忘记使视图可控的内容。

所以现在一切正常:

createFolder: {
            selector : '[lid=createFolder]',
            listeners: {
               click: 'createFolder'
            }
         }
于 2012-12-14T08:48:28.227 回答