2012-06-22 3 views
1

Есть ли способ отключить dojox.mobile.Switch так, чтобы он был виден, но неактивен и недоступен для неприкосновенности? Я не вижу ничего в стандартном документе API.Есть ли способ отключить dojox.mobile.switch?

Редактировать: Должен добавить, что я работаю с Dojo 1.7.

+0

Вы могли бы найти решение для этого? Я решил проблему greyed out, изменив непрозрачность контейнера, но я не вижу способа отключить фактический контроль – Mike

ответ

1

Я должен был сделать это сегодня. Я расширил модуль коммутатора. Хорошо работает для меня, но я уверен, что он может быть улучшен.

define([ 
    "dojo/_base/declare", 
    "dojox/mobile/Switch" 
], function(declare, Switch){ 
    return declare("my.package.Switch", [Switch], { 

     disabled: false, 
     events: {}, 

     disableSwitch: function() { 
      //remove events (but hold on to them for later).. there may be a better dojo way of doing this 
      this.events._onClick = this._onClick; 
      this.events.onClick = this.onClick; 
      this.events.onTouchStart = this.onTouchStart; 
      this.events.onTouchMove = this.onTouchMove; 
      this._onClick = function(){}; 
      this.onClick = function(){}; 
      this.onTouchStart = function(){}; 
      this.onTouchMove = function(){}; 

      //TODO: better styling to make it look disabled? 
      // this.domNode.style.opacity = '0.5'; 
      this.domNode.style['-webkit-filter'] = 'grayscale(1)'; 

      this.disabled = true; 
     }, 

     enableSwitch: function() { 
      //reattach events 
      this._onClick = this.events._onClick; 
      this.onClick = this.events.onClick; 
      this.onTouchStart = this.events.onTouchStart; 
      this.onTouchMove = this.events.onTouchMove; 

      // this.domNode.style.opacity = '1'; 
      this.domNode.style['-webkit-filter'] = 'grayscale(0)'; 

      this.disabled = false; 
     } 
    }); 
}); 
Смежные вопросы