Javascript 如何创建getter和setter
我刚刚接到一个被解雇的extjs开发人员的项目。在他做的控制器里,我发现了像Javascript 如何创建getter和setter,javascript,extjs,Javascript,Extjs,我刚刚接到一个被解雇的extjs开发人员的项目。在他做的控制器里,我发现了像 this.getMyButton().toggle(true); this.getMyContainer().getLayout()... 因此,我只是在视图中添加了一个新表单(我的前同事应该在圣诞节前完成的事情之一),并尝试使用 this.getMyNewForm().loadRecord(someStore.getAt(0)); Chrome告诉我,this.getMyNewForm()未定义。但是在代码中我没
this.getMyButton().toggle(true);
this.getMyContainer().getLayout()...
因此,我只是在视图中添加了一个新表单(我的前同事应该在圣诞节前完成的事情之一),并尝试使用
this.getMyNewForm().loadRecord(someStore.getAt(0));
Chrome告诉我,this.getMyNewForm()
未定义。但是在代码中我没有找到getMyButton()
的定义
那是怎么回事?如何定义getMyNewForm()
编辑:问题由文档()回答,但问题仍然存在
控制器中正确定义了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 emthod,也应该返回定义loadRecord方法的“类”的实例;这可能是一个特定于extjs的“类”,因为Evan Trimboli没有给出答案,让我来回答:
“您调用它太早了。在呈现任何视图之前会调用控制器的init。”首先,您应该研究什么已经存在,什么没有,以及如何实现。您调用它太早了<在呈现任何视图之前调用控制器的代码>初始化。@Evantimboli Thx!我将调用放入window.afterrender,现在它可以工作了。你介意回答一下吗,这样我就可以把这个问题标记为已回答了我刚刚在文档中找到了它,它很神奇,但我的问题还没有解决。我现在已经定义了ref,但是该方法仍然不可用。