获取元素绑定

时间:2014-01-17 14:39:21

标签: knockout.js

给定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];
    });
}

1 个答案:

答案 0 :(得分:2)

如果您有元素和对绑定上下文的引用,那么您可以使用getBindings的{​​{1}}方法来获取附加的绑定对象。

您可以通过ko.bindingProvider媒体资源访问当前bindingProvider

ko.bindingProvider.instance

演示JSFiddle

您可以在此处详细了解bindingProviders:KO 1.3 Preview Part 2: Custom Binding Providers