Model view controller EventLister在控制器中不工作
我正在做我的第一个SenchaTouch2项目,所以我还不太熟悉它。我正在使用Sencha文档,并且已经在Google上搜索了很多,但是似乎找不到这个问题的答案 我在MVC中工作,希望向视图中的控件添加一些EventListener(在控制器中)。无论我尝试什么,它们似乎都不起作用,尽管当我将它们添加到视图本身时,它们起作用。当然,这根本不是最佳实践,所以我想知道我做错了什么 这是我的控制器的外观:Model view controller EventLister在控制器中不工作,model-view-controller,controller,sencha-touch-2,event-listener,Model View Controller,Controller,Sencha Touch 2,Event Listener,我正在做我的第一个SenchaTouch2项目,所以我还不太熟悉它。我正在使用Sencha文档,并且已经在Google上搜索了很多,但是似乎找不到这个问题的答案 我在MVC中工作,希望向视图中的控件添加一些EventListener(在控制器中)。无论我尝试什么,它们似乎都不起作用,尽管当我将它们添加到视图本身时,它们起作用。当然,这根本不是最佳实践,所以我想知道我做错了什么 这是我的控制器的外观: Ext.define("workingTime.controller.MainControlle
Ext.define("workingTime.controller.MainController", {
extend: "Ext.app.Controller",
views: ['Main'],
refs: [
{
sl_break: '#sl_break'
},
{
sl_work: '#sl_work'
}
],
init: function() {
this.control({
'sl_break': {
change: 'setBreakTime'
}
});
},
setBreakTime: function(newValue) {
console.log('set');
}
});
这就是我的视图的外观(仍然添加了侦听器):
Ext.define(“workingTime.view.Main”{
扩展:“Ext.form.Panel”,
控制器:['MainController'],
要求:[
“Ext.field.Slider”
],
配置:{
全屏:对,
项目:[
{
xtype:'标签',
html:“休息五分钟”
},
{
xtype:'滑块字段',
名称:'sl_break',
数值:5,
最小值:1,
最大值:30,
风格:{
“背景色”:“FFEC0”
},
听众:{
更改:函数(){
警报(“更改”);
}
}
},
{
]
}
});
如果您需要更多信息,请告诉我。我会尝试:(不使用init函数)
在控制器中,在参考中添加
sl_break:“主滑块字段[itemId=sl_break]”
Ext.define("workingTime.controller.MainController", {
extend: "Ext.app.Controller",
views: ['Main'],
refs: [
{
sl_break: 'main sliderfield[itemId=sl_break]'
}
],
init: function() {
this.control({
'sl_break': {
change: 'setBreakTime'
}
});
},
setBreakTime: function(newValue) {
console.log('set');
}
});
在视图中,将alias
添加到main,并将itemId
添加到sliderfield
Ext.define("workingTime.view.Main", {
extend: 'Ext.form.Panel',
controllers: ['MainController'],
alias: 'widget.main',
requires: [
'Ext.field.Slider'
],
config: {
fullscreen: true,
items: [
{
xtype: 'label',
html: '<p class="label_field">Take a <span>five</span> minute break<p>'
},
{
xtype: 'sliderfield',
name: 'sl_break',
itemId:'sl_break',
value: 5,
minValue: 1,
maxValue: 30,
style: {
'background-color' : '#FFecc0'
},
listeners: {
change: function() {
alert('changed');
}
}
},
{
]
}
});
Ext.define(“workingTime.view.Main”{
扩展:“Ext.form.Panel”,
控制器:['MainController'],
别名:“widget.main”,
要求:[
“Ext.field.Slider”
],
配置:{
全屏:对,
项目:[
{
xtype:'标签',
html:“休息五分钟”
},
{
xtype:'滑块字段',
名称:'sl_break',
itemId:'sl_break',
数值:5,
最小值:1,
最大值:30,
风格:{
“背景色”:“FFEC0”
},
听众:{
更改:函数(){
警报(“更改”);
}
}
},
{
]
}
});
我希望它会起作用您也可以看看:似乎不起作用…也许我应该尝试通过操作而不是id访问滑块?引用应该包装在配置对象中。
Ext.define("workingTime.controller.MainController", {
extend: "Ext.app.Controller",
views: ['Main'],
refs: [
{
sl_break: 'main sliderfield[itemId=sl_break]'
}
],
init: function() {
this.control({
'sl_break': {
change: 'setBreakTime'
}
});
},
setBreakTime: function(newValue) {
console.log('set');
}
});
Ext.define("workingTime.view.Main", {
extend: 'Ext.form.Panel',
controllers: ['MainController'],
alias: 'widget.main',
requires: [
'Ext.field.Slider'
],
config: {
fullscreen: true,
items: [
{
xtype: 'label',
html: '<p class="label_field">Take a <span>five</span> minute break<p>'
},
{
xtype: 'sliderfield',
name: 'sl_break',
itemId:'sl_break',
value: 5,
minValue: 1,
maxValue: 30,
style: {
'background-color' : '#FFecc0'
},
listeners: {
change: function() {
alert('changed');
}
}
},
{
]
}
});