0

我创建了一个 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 没有准备好造成的,但事实并非如此。

4

3 回答 3

1

当您使用不带引号的联系人时,Knockout 会搜索名称为 的 observable Contact。但是,您的 ViewModel 中没有这样的 Observable。

看来您也没有在自定义处理程序中使用这个词。如果您需要将此单词作为文本传递给您的处理程序,您可以将它包含在引号 => 'Contact' 中

<div class="contact" data-bind="highlight: 'Contact'"> 
OR
<div class="contact" data-bind="highlight: true">
于 2013-08-29T17:12:10.490 回答
1

Is Contact supposed to be an element of the contactsInfrastructure array? Because, if so, you should be using <div class="contact" data-bind="highlight: $data"> instead.

于 2013-08-29T17:20:21.683 回答
0

在 html 中绑定时,实体名称必须相对于列名/实体名称采用驼峰式。

于 2013-08-30T02:31:28.043 回答