2013-08-22 1 views
1

Я пытаюсь отключить фон от закрытия модального при нажатии следующее:Twitter-Bootstrap Модального Bindinghandler с Нокаут нарушения, если задник щелкнул

ko.bindingHandlers.showModal = { 
    init: function (element, valueAccessor) { 
    }, 
    update: function (element, valueAccessor) { 
     var value = valueAccessor(); 
     if (ko.utils.unwrapObservable(value)) { 
      $(element).modal({ backdrop: 'static', keyboard: true }); 
      // this is to focus input field inside dialog 
      $("input", element).focus(); 
     } 
     else { 

      $(element).modal('hide'); 
     } 
    } 
}; 

Из того, что я понимаю, $(element).modal({ backdrop: 'static', keyboard: true }); должен добиться того, что я после. Но если я нажму на фон, модальность все равно закрывается, и на самом деле разрывает кнопку «показать». Что я здесь делаю неправильно?

Fiddle: http://jsfiddle.net/PTSkR/175/

ответ

2

Вы проблема заключается в том, что вы пытаетесь инициализировать модальный несколько раз.

инициализации логика, где вы установите backdrop: 'static' должны перейти в функцию init (которая вызывается только один раз), и вам нужно позвонить .modal('show') и .modal('hide') в вашей update функции:

ko.bindingHandlers.showModal = { 
    init: function (element, valueAccessor) { 
     $(element).modal({ backdrop: 'static', keyboard: true, show: false }); 
    }, 
    update: function (element, valueAccessor) { 
     var value = valueAccessor(); 
     if (ko.utils.unwrapObservable(value)) { 
      $(element).modal('show'); 
      $("input", element).focus(); 
     } 
     else { 
      $(element).modal('hide'); 
     } 
    } 
}; 

Demo JSFiddle.

Смежные вопросы