Dojo: Как отключить TabBarButton?

Как я могу отключить TabBarButton? Я хочу, чтобы он был некликабельным и серым.

В руководстве нет никаких параметров для его установки. https://dojotoolkit.org/reference-guide/1.9/dojox/mobile/TabBarButton.html

    createFooter : function() {

       this.inherited(arguments);

       this.footer = new Footer({}, this.footerNode);

       this.settingsBtn = new TabBarButton(
         {
          clickable:false,
          icon : "images/settingsIcon.png",
         }, domConstruct.create("li"));

       this.footer.addChild(this.settingsBtn);

       this.settingsBtn.onClick = lang.hitch(this, "settings");

      },

      settings : function() {

       alert("settings started");

    }

person Ken Vernaillen    schedule 26.09.2013    source источник


Ответы (2)


Вы можете установить для clickable значение false. Это параметр в родительской базе данных _itembase.

Ваша ссылка на документ может устареть, вы можете найти этот параметр в исходном коде _itembase.

person Sean Zhao    schedule 26.09.2013
comment
В документации по itembase не сказано, что если вы установите clickable на false, onclick виджета не будет работать. Если установлено значение true, элемент становится интерактивным, даже если пункт назначения перехода (moveTo и т. д.) не указан. Если я установлю clickable на false, я все равно смогу щелкнуть по нему. (Я привязал lang.hitch к элементу) - person Ken Vernaillen; 30.09.2013
comment
Можете ли вы попробовать onclick вместо onClick, см. эту статью< /а> - person Sean Zhao; 30.09.2013

Я создал свой собственный виджет, потому что это не было функциональностью tabbarButton по умолчанию. Вот мой код:

    define([
        "dojo/_base/declare",
        "dojo/_base/lang",
        "dojo/on",
        "dojo/dom-class",
        "dojox/mobile/TabBarButton"
    ], function(declare, lang, on, domClass, TabBarButton) {
        return declare("TabBarButtonDisable",[TabBarButton], {

            onClickBackup:null,
            isDisabled : false,


            _setIsDisabledAttr : function(isDisabled) {
                this.isDisabled = isDisabled;
                this.renderIsDisabled();
            },
            _getIsDisabledAttr : function() {
                return this.isDisabled;
            },

            renderIsDisabled : function() {
                if (this.isDisabled) {
                    domClass.add(this.domNode, "disabled");
                    this.onClick = function(){
                // isDisabled
                    };
                } else {
                    domClass.remove(this.domNode, "disabled");
                    this.onClick = this.onClickBackup;
                }
            },

            buildRendering : function() {
                this.inherited(arguments);
                this.onClickBackup = this.onClick;
            },

            postCreate: function() {
                this.inherited(arguments);
            }

        });
    });
person Ken Vernaillen    schedule 03.10.2013