繁体   English   中英

KnockoutJS中的自定义绑定

[英]Custom Bindings in KnockoutJS

我刚开始使用KnockoutJS时遇到了自定义绑定的问题。 我为自定义绑定分配了可观察对象,并通过输入字段更改了可观察对象。 另一个文本字段已经对更改做出反应,但是以某种方式未触发更新。

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>

https://jsbin.com/kupitepaxe/1/edit?html,js,控制台,输出

只是因为您从不访问绑定中的可观察对象,所以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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM