如何通过调用ref config自动生成的函数从控制器中获取Sencha Touch 2中的视图?

时间:2012-12-14 04:44:34

标签: sencha-touch sencha-touch-2

我在Sencha中定义了一个控制器,它包含一个引用我的视图的refs属性,但每当我调用自动生成的“get”函数来获取视图时,基于refs属性,它返回undefined。这是我的例子:

我在app / controller / Locals.js中有以下控制器:

Ext.define('MobileUnion.controller.Locals', {
    extend: 'Ext.app.Controller',

    // Base class methods.
    launch: function () {
        this.callParent(arguments);
    },
    init: function () {
        this.callParent(arguments);
    },

    config: {
        refs: {
        localsEditorView: 'localseditorview',
    },
    control: {
        localsEditorView: {}
    }
    },
    slideUpTransition: { type: 'cover', direction: 'up' },
    onEditLocalsCommand: function() {
        this.activateLocalsEditor();
    },
    activateLocalsEditor: function() {
        var localsEditorView = this.getLocalsEditorView();
        console.log(localsEditorView);  // Returns "undefined" to console.
        Ext.Viewport.animateActiveItem(localsEditorView, this.slideUpTransition);
    }
});

我在app / views / LocalsEditor.js中有以下视图:

Ext.define('MobileUnion.view.LocalsEditor', {
    extend: 'Ext.Panel',
    alias: 'widget.localseditorview',

    config: {
        html: 'This is the new view which should show up on top!'
    },
});

所以,在上面的例子中,如果我从我的控制器中调用this.getLocalsEditorView(),即使我将refs属性设置为localsEditorView: 'localseditorview',我也会得到“未定义”,并且我将MobileUnion.view.LocalsEditor定义为包含别名widget.localseditorview。当我这样做时,我觉得我应该得到这个观点。

顺便说一下,我确实在app.js的views属性中定义了视图,所以不是它。

更多信息:我的webkit控制台中没有返回实际错误。只需在我的控制器中调用上面提到的console.log(),就会返回undefined,而不是视图对象。

问题:如何使此函数返回视图,而不是未定义,我该怎么办?任何帮助,将不胜感激。我希望确保这不仅仅是一个错字;它似乎不是。

1 个答案:

答案 0 :(得分:1)

“refs”用于创建对现有组件的引用。到目前为止,你所做的就是宣布一个课程,从你发布的内容来看,你从未在任何地方实例化过。

您可能需要在此处阅读有关autoCreate的文档: http://docs.sencha.com/touch/2-1/#!/api/Ext.app.Controller-cfg-refs