我在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,而不是视图对象。
问题:如何使此函数返回视图,而不是未定义,我该怎么办?任何帮助,将不胜感激。我希望确保这不仅仅是一个错字;它似乎不是。
答案 0 :(得分:1)
“refs”用于创建对现有组件的引用。到目前为止,你所做的就是宣布一个课程,从你发布的内容来看,你从未在任何地方实例化过。
您可能需要在此处阅读有关autoCreate的文档: http://docs.sencha.com/touch/2-1/#!/api/Ext.app.Controller-cfg-refs