1

好的,故事就讲到这里:

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

[ + ] addBtn        [ - ] subtractBtn - hidden

第一次单击 时addBtnsubtractBtn应显示 。

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

当您单击 addBtn 时,count单击次数应增加 1。

当您单击 时subtractBtncount点击次数应减 1。

count达到0时,subtractBtn应该消失

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

如果有人能回答如何在 Ext JS 中做到这一点,那就太好了,我将提供大量的支持。谢谢!

4

3 回答 3

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'
    });

});
于 2013-08-08T21:05:52.587 回答
1

我假设按钮有一个共同的祖先(可能是容器或面板)。您可以将变量保留在那里。如果您使用的是按钮处理程序,则可以使用 up() 访问父容器

handler: function(btn, e) {
    btn.up('container').count++; 
}

您可能需要查看http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.ComponentQuery以确定哪个选择器用于 up() 函数。

于 2013-08-08T20:52:38.263 回答
1

您始终可以使用应用程序实例的getController方法从控制器 1 访问控制器 2,您可以在控制器 1 的onLaunch方法中获得该方法。

application.getController("controller2").count++;
于 2013-08-09T09:43:03.853 回答