字幕:
var asdasd = {
test: ko.observableArray([0, 50])
};
alert(asdasd.test()); //0,50
asdasd.test.subscribe(function() {
return alert("I was changed!!");
});
ko.bindingHandlers.rangeslider = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var length;
length = valueAccessor().length; //0 =(
return alert("Why valueAccessor().length is " + length + " when it wasn't changed? =((");
}
};
ko.applyBindings(asdasd);
HTML:
<div data-bind="rangeslider: test"></div>
问题是valueAccessor()
里面init
是空的,但警报仍然保持它具有值。如果我通过rangeslider: test()
(展开可观察性),它工作正常,但是我需要从更改该可观察性的值init
。
那么,在没有通知的情况下失去的价值在哪里变化?
您必须解开valueAccessor以获得可观察的值:
length = ko.utils.unwrapObservable(valueAccessor()).length;
这是更新的小提琴:http : //jsfiddle.net/86sAP/4/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句