好的,这就是故事:
我有两个按钮,两个不同的控制器(处理程序) - 加号和减号按钮:
[ + ] addBtn [ - ] subtractBtn - hidden
首次点击addBtn
时,subtractBtn
应显示。
任一按钮的最大点击次数为2.
单击addBtn时,点击的count
应增加1。
点击subtractBtn
后,count
次点击次数应减少1次。
当count
达到0时,subtractBtn
应该消失
这里的问题是我需要以某种方式将此变量(count)存储到两个控制器都可以读取的变量中。
如果有人能够回答如何在Ext JS中做到这一点,那将是非常好的,我将提供大量的赞成票。谢谢!
答案 0 :(得分:1)
我假设按钮有一个共同的祖先(可能是容器或面板)。你可以保留变量。如果您正在使用按钮处理程序,则可以使用up()
访问父容器handler: function(btn, e) {
btn.up('container').count++;
}
您可能需要查看http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.ComponentQuery以找出用于up()函数的选择器。
答案 1 :(得分:1)
将count用作全局变量,这是一个工作示例:http://jsfiddle.net/x_window/HVkhy/1/
Ext.onReady(function(){
var count = 0;
var btnAdd = new Ext.Button({
width: 50,
text: '+',
handler: function(){
++count;
if(count > 0 && btnSubs.hidden)
btnSubs.show();
if(count > 1 && !btnAdd.hidden)
btnAdd.hide();
}
});
var btnSubs = new Ext.Button({
width: 50,
hidden: true,
text: '-',
handler: function(){
--count;
if(count < 2 && btnAdd.hidden)
btnAdd.show();
if(count < 1 && !btnSubs.hidden)
btnSubs.hide();
}
});
var panel = new Ext.Panel({
width: 200,
items: [btnAdd, btnSubs],
renderTo: 'content'
});
});
答案 2 :(得分:1)
您始终可以使用应用程序实例的getController方法从controller1访问controller2,这是您在controller1的onLaunch方法中获得的。
application.getController("controller2").count++;