0

我有视图模型

var viewModel = {
    amount: ko.observable(1),
    rate: ko.observable(2),
    rate222: ko.observable(2)
};


<input data-bind="value: amount" />
<input data-bind="value: rate" />

我怎么知道 rate222 没有绑定在这个文件上?

  • 对于需要它进行多页验证,用于在现有文档上声明!

最好的祝福


升级版:

这并没有解决这个问题在这里jsfiddle.net/x26sS/14绑定值“rate222”不在DOM中,但淘汰赛认为不是这样:“show,rate12312”。

4

1 回答 1

0

在 Knockout 中没有一个很好的方法来明确知道一个元素是开箱即用的。

编写自定义绑定非常容易,该绑定将bound标志添加到可观察对象或计算对象,然后您可以在查找“未绑定”属性时使用它。

绑定可能看起来像:

ko.bindingHandlers.track = {
    init: function(element, valueAccessor) {
       var observable = valueAccessor();
       if (ko.isObservable(observable)) {
           observable.bound = true;  
       }

       //clear the flag if this element is removed
       ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
            var observable = valueAccessor();
            if (ko.isObservable(observable)) {
                observable.bound = false;     
            }     
       });           
    }
};

您甚至可以包装值绑定以将此功能添加到其中。

这是一个示例,它在元素上使用此绑定,然后提供一个函数来遍历视图模型(仅示例中的顶级)并查找任何未绑定的属性。

http://jsfiddle.net/rniemeyer/x26sS/

于 2012-10-10T16:45:15.727 回答