我正在尝试更改变量的值,我在this帖子中作为指令执行但值不会更改。
我的代码如下:
Ext.define('MyApp.view.OnlineOffline', {
extend: 'Ext.Panel',
alias: "widget.onlineoffline",
config: {
onlineStatus: 0,
items: [
{
xtype: 'container',
layout: 'hbox',
cls: 'offline-wrap',
items:[
{
xtype: 'image',
cls: 'offlineCheck',
id:'onlineButton',
width: 85,
height:20,
listeners: {
tap: function (button)
{
var me = button.up('onlineoffline')
if (!Ext.device.Connection.isOnline())
{
Ext.Msg.alert('Please connect to <br/>working internet Connection?');
this.element.removeCls('onlineCheck');
this.element.addCls('offlineCheck');
me.setonlineStatus(1);
}
else {
if(me.getOnlineStatus())
{
console.log( 'connection yes if' + me.getOnlineStatus());
me.setOnlineStatus(1);
this.element.removeCls('onlineCheck');
this.element.addCls('offlineCheck');
}
else{
this.element.removeCls('offlineCheck');
this.element.addCls('onlineCheck');
me.setOnlineStatus(0);
console.log( 'connection yes else' + me.getOnlineStatus());
}
}
}
}
},
]
}]
}
});
答案 0 :(得分:1)
这里有几件事......
首先,您将me
初始化为全局变量,这是个坏主意。而不是这样做,使用按钮获取对me
的所有内容的引用:
listeners: {
tap: function (button) {
var me = button.up('onlineoffline')
...
您遇到的问题是因为您正在调用错误的函数。您的config
参数定义为onlineStatus
,但您正在调用setonlinestatus()
。请致电me.setOnlineStatus()
。生成的getter和setter的camel-casing将完全按照config
param完成,除了第一个字母将大写。