0

我正在使用 Sencha Touch 2,0,1。

我需要从控制器中的视图中获取元素。

目前我使用这种方法可以正确获取视图,但我无法获取视图中的项目。我没有收到任何错误,只是测试未定义。

有任何想法吗?

在控制器中:

var test = this.getDetailView().items['editButton'];

视图中的代码:

Ext.define('XXX.view.DetailView',{
   ...

   items: [

        {
            xtype: 'button',
            text: 'Edit XXX',
            ui: 'custom-btn-dwn-timetable',
            itemId: 'editButton'
        }
  ],
    ...
}
4

3 回答 3

5

还有其他几种方法可以获取对编辑按钮的引用。您可以将编辑按钮连接为ref,如下所示:

Ext.define('MyApp.Controller', {
    extend: 'Ext.app.Controller',

    config: {
        refs: {
            editButton: '#editButton'
        }
    },

然后在您的控制器中,您可以调用自动生成的 getterthis.getEditButton()来获取实际的编辑按钮组件。

您可以做的另一件事是将编辑按钮保存为视图上的实例变量,如下所示:

Ext.define('XXX.view.DetailView',{
   ...

   items: [

        this.editButton = Ext.widget{(
            xtype: 'button',
            text: 'Edit XXX',
            ui: 'custom-btn-dwn-timetable',
            itemId: 'editButton'
        )}
  ],
    ...
}

因此,现在要访问控制器中的按钮,您必须执行以下操作:this.getDetailView().editButton

一般来说,如果一个元素是你经常访问的东西,你应该保存对它的引用,而不是查询 DOM(以避免不必要的性能损失)。由于执行堆栈,使用 Ext.getCmp() 也较慢(它必须每次都通过 ComponentManager 才能获得引用)。

于 2013-02-20T20:23:25.647 回答
2

在这种情况下,您可以使用Ext.ComponentQuery来获取您的按钮:

Ext.ComponentQuery.query('#editButton')[1];
于 2013-02-13T09:44:37.663 回答
1

您可以尝试将您的按钮 ID 设置为edit然后

Ext.getCmp('edit').hide();
于 2013-02-13T10:22:09.220 回答