Ko.bindinghandlers无法在Chrome中工作

时间:2013-08-29 12:31:53

标签: javascript knockout.js

我创建了一个bindingHandler:

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中会返回此错误:未捕获的ReferenceError:

Unable to parse bindings.
Bindings value: highlight: Contact
Message: Contact is not defined

起初我以为这是由于DOM没有准备就绪造成的,但事实并非如此。

3 个答案:

答案 0 :(得分:1)

当您使用没有任何引号的联系人时,Knockout会搜索名为Contact的可观察对象。但是,ViewModel中没有这样的Observable。

您似乎也没有在自定义处理程序中使用此单词。如果您需要将此单词作为文本传递给处理程序,则可以将其包含在quotes =&gt;中&#39;联系&#39;

<div class="contact" data-bind="highlight: 'Contact'"> 
OR
<div class="contact" data-bind="highlight: true">

答案 1 :(得分:1)

Contact应该是contactsInfrastructure数组的元素吗?因为,如果是这样,您应该使用<div class="contact" data-bind="highlight: $data">代替。

答案 2 :(得分:0)

在html中绑定时,实体名称必须是关于列名/ entityName的camelcase。