我刚开始使用KnockoutJS并遇到自定义绑定问题。我将一个observable分配给自定义绑定,并通过输入字段更改该observable。另一个文本字段已经对更改做出反应,但某种程度上更新不会被触发。
ko.bindingHandlers.someBinding = {
update: function(element, valueAccessor) {
console.log("B");
}
}
function myModel() {
this.lastname = ko.observable("name");
}
ko.applyBindings(new myModel());
...
<p data-bind="text: lastname"></p>
<input data-bind="value: lastname" />
<p data-bind="someBinding: lastname" ></p>
答案 0 :(得分:0)
这只是因为你从未在绑定中访问observable,所以KO认为你不需要那个可观察的。
只需访问它,例如:
var currentValue = ko.unwrap(valueAccessor());
通常情况下,您可以将其作为绑定处理程序的一部分,因为通常您需要该值,但是您的初始测试没有这样做,这就是您没有得到预期结果的原因。
直播示例:
ko.bindingHandlers.someBinding = {
update: function(element, valueAccessor) {
console.log("B");
ko.unwrap(valueAccessor());
}
}
function myModel() {
this.lastname = ko.observable("name");
}
ko.applyBindings(new myModel());
<p data-bind="text: lastname"></p>
<input data-bind="value: lastname" />
<p data-bind="someBinding: lastname" ></p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>