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 では次のエラーが返されます: Uncaught ReferenceError:

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

最初はDOMの準備ができていないことが原因かと思っていましたが、そうではありません。

4

3 に答える 3

1

引用符なしで contact を使用すると、Knockout は名前が のオブザーバブルを検索します 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 に答える
0

html でバインドする場合、エンティティ名は列名/entityName に関してキャメルケースにする必要があります。

于 2013-08-30T02:31:28.043 に答える