我刚刚分配了一个被解雇的extjs开发人员的项目。在他制作的控制器中,我发现像
this.getMyButton().toggle(true);
this.getMyContainer().getLayout()...
因此,我只是向视图添加了一个新表单(我的前同事应该在圣诞节之前完成的一件事情),并尝试使用以下方法从控制器中调用它
this.getMyNewForm().loadRecord(someStore.getAt(0));
Chrome告诉我
this.getMyNewForm()
未定义。但是我在代码中没有找到getMyButton()
的定义。怎么了如何定义
getMyNewForm()
?编辑:文档(http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.app.Controller-cfg-refs)回答的问题,但问题仍然存在。
Ref在控制器中正确定义:
refs: [{
ref :'MyNewForm',
selector :'form[id=myNewForm]'
}]
在视图中正确定义了MyNewForm
items: [{
xtype: 'form',
header:false,
frame:false,
id:'myNewForm',
items: [{
但是当我打电话时它不起作用
init: function() {
this.control({
});
this.getMyNewForm().loadRecord(someStore.getAt(0));
},
最佳答案
您应该在控制器的构造函数的原型上定义该方法。 JavaScript引擎抱怨的原因很简单,因为您尚未定义getMyNewForm方法。这不是魔术,您不能调用随机方法。
您说getMyButton方法在代码中不存在。好吧,那根本不可能。可能是存在某种继承层次结构,并且您的控制器只是从构造函数中继承,该构造函数在其原型上定义了该方法。
切记,即使定义了getMyNewForm方法,也应返回定义loadRecord方法的“类”的实例。这可能是extjs特有的“类”