我创建了一个绑定处理程序:
ko.bindingHandlers.highlight = {
update: function (element, valueAccessor) {
$(element).fadeTo("fast", 0.03);
$(element).fadeTo("fast", 1);
$(element).fadeTo("fast", 0.03);
$(element).fadeTo("fast", 1);
$(element).fadeTo("fast", 0.03);
$(element).fadeTo("fast", 1);
$(element).fadeTo("fast", 0.03);
$(element).fadeTo("fast", 1);
}
};
并将其绑定到observableArray:
<div data-bind="foreach: contactsInfrastructure">
<div class="contact" data-bind="highlight: Contact">
<div class="contactAvailability">
<div class="contactAvailabilityColor" data-bind="css: "availabilityCssClass"></div>
</div>
<div class="contactName" ><span data-bind="text: name"</span></div>
<!-- <div class="contactNote ellipseText" data-bind="text: group"></div> -->
</div>
</div>
它在Firefox中运行良好,但在Chrome中返回此错误:Uncaught ReferenceError:
Unable to parse bindings.
Bindings value: highlight: Contact
Message: Contact is not defined
起初,我认为这是由于DOM没有准备好造成的,但事实并非如此。
Contact
应该是contactsInfrastructure
数组的元素吗?因为,如果是这样的话,您应该使用<div class="contact" data-bind="highlight: $data">
。
当您使用不带任何引号的联系人时,Knockout会搜索名称为Contact
的可观察对象。但是,在ViewModel中没有这样的Observable。
您似乎也没有在自定义处理程序中使用这个词。如果你需要将这个单词作为文本传递给你的处理程序,你可以将它包装在引号=>"联系"中
<div class="contact" data-bind="highlight: 'Contact'">
OR
<div class="contact" data-bind="highlight: true">
在html中绑定时,实体名称必须相对于列名/entityName在camelcase中。