2013-03-11 62 views
3

我有以下的自定義綁定Knockout.js - 在一個綁定接入觀察到的,不僅僅是它的價值

ko.bindingHandlers.dialogFor = { 
    init: function(el, valueAccessor) { 
     $(el).dialog(); 
     var val = valueAccessor(); 
     if(ko.isObservable(val)) 
      $(el).on('dialogclose', function(){ 
       val(null) 
      }); 
    } 
}; 

這讓我簡單地通過設置觀測標記與dialogFor一個HTML片段的結合和打開的對話框。

不幸的是,傳入的值總是被解包,所以if檢查從不傳遞並且重置對話框關閉時的observable不起作用。

我如何獲得通過的實際可觀察​​值,而不僅僅是解包值?

回答

1

我看不到你的HTML所以它的一個猜測,我覺得你是在自定義使用可觀察到的結合的值,如:

<div data-bind="dialogFor: val()"></div> 

如果是比你已經解開的價值,唯一的價值不是可觀測被傳遞給您的自定義綁定,所以這就是爲什麼你的,如果條件是failing.You應該使用它像:

<div data-bind="dialogFor: val"></div> 

我創建了一個working example在jQuery UI的對話狀態被觀察到的控制。

相關問題