[英]Changing observable array alters visibility of custom binding handler, knockoutjs
[英]KnockoutJS: How pass observable to custom binding?
Javscript:
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>
问题是init
中的valueAccessor()
是空的,但是alert保持它有值。 如果我传递的是rangeslider: test()
(unwraping observable),它可以正常工作,但我需要从init
更改observable的值。
那么这个价值在没有通知的情况下失去了它的变化?
您必须解包valueAccessor才能获得可观察的值:
length = ko.utils.unwrapObservable(valueAccessor()).length;
这是更新的小提琴: http : //jsfiddle.net/86sAP/4/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.