2013-08-29 21 views
0
工作

我創建了一個bindingHandler:Ko.bindinghandlers無法在Chrome

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引起的,但事實並非 案件。

+2

請創建一個jsfiddle。 – FakeRainBrigand

回答

1

Contact應該是contactsInfrastructure數組的元素?因爲,如果是這樣,你應該使用<div class="contact" data-bind="highlight: $data">來代替。

+0

謝謝,它工作:) – mupersan82

1

當您使用沒有任何引號的聯繫人時,Knockout將搜索名稱爲Contact的可觀察對象。但是,ViewModel中沒有這樣的Observable。

看來你也沒有在你的自定義處理程序中使用這個詞。如果你需要這個詞傳遞到您的處理程序,文本,你可以用它裏面引用=>「跟」

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

雖然在html中綁定實體名稱必須在camelcase相對於列名稱/實體名稱。