我有viewModel
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没有绑定在这个文件上?
最好的问候
UPD:
这不解决这个问题jsfiddle.net/x26sS/14绑定值“rate222”不在DOM中,但淘汰赛并不这么认为:“show,rate12312”。
答案 0 :(得分:0)
Knockout中没有一种很好的方法可以明确地知道元素是开箱即用的。
编写一个自定义绑定可以很容易地将bound
标志添加到observable或计算中,然后在查找“未绑定”属性时可以使用它。
绑定可能看起来像:
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;
}
});
}
};
您甚至可以包装值绑定以将此功能添加到其中。
这是一个在元素上使用此绑定的示例,然后提供一个循环遍历视图模型的函数(仅在示例中为顶级)并查找任何未绑定的属性。