我想知道Sencha Touch类'Ext.app.Controller'的'refs'属性。 我看了一个视频教程,其中构建了一个简单的contactForm。不,我试图为我的应用程序构建一个联系表单,我收到一个错误:'未捕获的TypeError:对象[对象对象]没有方法'getContactForm''
这是我的控制器
Ext.define('MyFirstApp.controller.Main', {
extend: 'Ext.app.Controller',
views: ['Viewport', 'Home'],
refs: [
{
ref: 'contactForm',
selector: '#contactForm'
}
],
init: function() {
this.control({
'button[action=submitContact]': {
tap: 'submitContactForm'
}
});
},
submitContactForm: function() {
var form = this.getContactForm();
form.submit({
url: 'contact.php'
});
}
});
我想这是'refs'的错误,在视频中,那个家伙说“getContactForm”方法会因为“contactForm”的“ref”属性而被创建,但事实并非如此。我在这里做错了什么?...感谢您的帮助!
答案 0 :(得分:2)
refs属性属性已从Sencha Touch 2.0开发人员预览版更改为beta / final版。所以,你所写的内容对于开发预览是正确的,但目前它只是命名值对。对于你的情况:
refs: {
contactForm: '#contactForm'
}
答案 1 :(得分:1)
我同意jeremygerrits,我不能确定这是定义引用的正确语法。
基于documentation,我宁愿这样做:
Ext.define('MyFirstApp.controller.Main', {
extend: 'Ext.app.Controller',
views: ['Viewport', 'Home'],
config: {
refs: {
contactForm: '#contactForm'
}
}
init: function() {
this.control({
'button[action=submitContact]': {
tap: 'submitContactForm'
}
});
},
submitContactForm: function() {
var form = this.getContactForm();
form.submit({
url: 'contact.php'
});
}
});
答案 2 :(得分:0)
看起来好像你的配置错误了。这是一个简单的控制器:
Ext.define('App.controller.Main', {
extend: 'Ext.app.Controller',
config: {
refs: {
main: 'mainpanel'
}
}
});
mainpanel
是xtype
或可能是css选择器,而main
会像getMain()
那样为您提供视频中所谈到的内容。