2014-01-17 67 views
1

給定一個HTML元素,如何確定應用了哪些綁定?獲取元素綁定

我可以用ko.dataFor(elem)ko.contextFor(elem)來確定bindingContext和viewModel。有沒有類似的東西能給我一個附加在元素上的綁定列表?

在我在使用jQuery找出綁定到該元素的時刻:

var bindings = $(element).data("bind"); 

然後我必須手動分割,以獲得評估鍵/值對,這是顯然很討厭。

bindings= bindings.split(","); 

$.each(bindings, function (index, value) { 
    var parts = value.split(":"); 
    value = parts[1].trim().replace("()", ""); 

    var observableToUpdate = koElement; 
    var propertyParts = value.split("."); 

    // The valueAccessor has dots in it? 
    // Let's find the end of this piece of string 
    $.each(propertyParts, function (ind, val) { 
     observableToUpdate = observableToUpdate[val]; 
    }); 
} 
+0

你需要的是這樣的:http://jsfiddle.net/Y8MR3/? – nemesv

+0

這正是我需要:)謝謝。 –

回答

1

如果有元件,並結合上下文的引用,然後可以使用ko.bindingProvidergetBindings方法來獲得附加的結合對象。

您可以通過ko.bindingProvider.instance屬性訪問當前bindingProvider

​​

演示JSFiddle

你可以閱讀更多關於這裏的bindingProviders:KO 1.3 Preview Part 2: Custom Binding Providers

+0

謝謝nemesv。我現在唯一的問題是檢索綁定綁定的observable,所以我可以調用valueHasMutated。 : - | –

+0

事實證明,我不需要獲取可觀察值,因爲我可以通過'ko.bindingHandlers [bingingName]'來訪問每個綁定,並調用它的'update'方法而不是嘗試'valueHasMutated'。 –