[英]ExtJS MVC form references
我是Sencha ExtJS的新手。 我刚刚开始创建MVC应用程序。 当前,我正在尝试为该应用程序创建一个登录屏幕,但无法从登录控制器获取对我的登录表单的引用。 这是我的代码:
app.js
Ext.application({
name: 'Fleximanager',
requires: [
],
controllers: [
'Login'
],
autoCreateViewport: true,
init: function() {
}
});
Viewport.js
Ext.define('Fleximanager.view.Viewport', {
extend: 'Ext.container.Viewport',
requires:[
'Fleximanager.view.login.Flexilogin'
],
layout: 'fit',
items: [{
xtype:'flexilogin'
}]
});
Flexilogin.js
Ext.define('Fleximanager.view.login.Flexilogin', {
extend: 'Ext.panel.Panel',
xtype: 'flexilogin',
layout: {
type: 'vbox',
align: 'center',
pack: 'center'
},
id: 'flexilogin',
style: {background: '#8fc33a'},
items: [{
xtype:'panel',
title: 'Login',
frame: true,
width: 350,
height: 200,
layout: 'fit',
items: {
layout: 'anchor',
id: 'flexiloginform',
bodyPadding: 15,
defaultType: 'textfield',
items: [{
fieldLabel: 'Username',
name: 'username',
allowBlank: false
},{
fieldLabel: 'Password',
name: 'password',
inputType: 'password',
allowBlank: false
}],
buttons: [{
text: 'Register',
id: 'registerbtn',
action: 'register'
},{
text: 'Login',
id: 'loginbtn',
formBind: true,
}]
}
}]
});
和控制器的Login.js
Ext.define('Fleximanager.controller.Login', {
extend: 'Ext.app.Controller',
requires: [
'Fleximanager.view.login.Flexilogin',
],
refs:[{
ref: 'loginbtn',
selector: '#loginbtn'
}],
init: function(){
this.control({
'loginbtn': {
'click': function(){
console.log('click');
}
}
})
}
});
单击登录按钮后,该代码应该记录“单击”以进行控制台,但是它什么也没做。 谁能帮我?
感谢您的回答。
像这样给按钮命名,
{
text: 'Login',
id: 'loginbtn',
formBind: true,
name: 'login'
}
现在在控制器中,输入以下代码:
this.control({
'button[name="login"]': {
click: function(){
console.log('click');
}
}
})
这将达到您的目的。
问题出在您如何引用按钮上。
refs:[{
ref: 'loginbtn',
selector: '#loginbtn'
}],
正在创建引用吸气剂方法this.getLoginbtn
以在控制器中使用,但不能在this.control
this.control
的字符串键是类似于Ext.ComponentQuery.query
定义的标识符。 它搜索xtype / alias和itemId。
this.control({
'flexilogin #loginbtn': {
^ xtype ^ itemId
请注意,您应该使用itemId
而不是id
因为id
随时在页面上必须是唯一的, itemId
在组件内应该是唯一的。 像这样更改:
{
text: 'Login',
itemId: 'loginbtn',
^ replace id by itemId
formBind: true,
name: 'login'
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.