简单的添加和减少拼图

时间:2013-08-08 20:11:18

标签: button extjs if-statement conditional-statements

好的,这就是故事:

我有两个按钮,两个不同的控制器(处理程序) - 加号和减号按钮:

[ + ] addBtn        [ - ] subtractBtn - hidden

首次点击addBtn时,subtractBtn应显示。

任一按钮的最大点击次数为2.

单击addBtn时,点击的count应增加1。

点击subtractBtn后,count次点击次数应减少1次。

count达到0时,subtractBtn应该消失

这里的问题是我需要以某种方式将此变量(count)存储到两个控制器都可以读取的变量中。

如果有人能够回答如何在Ext JS中做到这一点,那将是非常好的,我将提供大量的赞成票。谢谢!

3 个答案:

答案 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++;