2013-01-04 60 views
0

我在創建自定義綁定時遇到了一些問題。從我的理解來看,綁定的更新回調應該在每次視圖模型更改時觸發。按鈕上的敲除自定義綁定

我創建了一個小例子。

http://jsfiddle.net/alexmaie/pbEmS/

ko.bindingHandlers.testBinding = { 

    update: function(element, valueAccessor, allBindingsAccessor, viewModel,  bindingContext) { 
//just for testing purposes 
    alert("update"); 
    } 
}; 

$(document).ready(function() { 
function AppViewModel() { 
    var self = this; 
    self.firstName = ko.observable("Bert"); 

} 
ko.applyBindings(new AppViewModel()); 
});​ 

有我附加結合於一個按鈕。綁定的更新被執行一次,然後再也不會再次,即使我更改了observable的數據。

我想使用這種方法來實現canExecute綁定。

回答

1

綁定在computed observable的內部實現,所以它們根據實際訪問的觀察值/計算值跟蹤相關性。

因此,這意味着,在您的update功能,你將要訪問傳遞給它的觀察到的值,如:

ko.bindingHandlers.testBinding = { 
     update: function(element, valueAccessor) { 
     //dependency is created here 
     var value = ko.utils.unwrapObservable(valueAccessor()); 
     alert("update " + value); 
     } 
    } 

更新小提琴:http://jsfiddle.net/rniemeyer/pbEmS/2/

+0

您好,感謝的解釋,我錯過了依賴關係創建的地步。 –