2016-08-02 4 views
0

Ich habe ein Problem mit .dotdotdot jQuery Plugin mit KnockoutJS verwendet. I haben eine ähnliche Struktur:jQuery dotdotdot Plugin deaktivieren knokokut Bindungen

<div class="dotdotdot"> 
    <h3 data-bind="text: Text"></h3> 
</div> 
<input data-bind="value: Text"/> 
<button data-bind="click: someThingsThatTriggerDotdotdotFunction"/>  

Das Problem ist, dass, wenn dotdotdot Funktion wird auf HTML-Element mit Klasse dotdotdot dann Bindungs ​​Beziehung gebrochen genannt wird.

$('.dotdotdot').dotdotdot({}); 

Nachdem der oben beschriebene Ausführung von Code-Wert von h3 nicht länger nach dem Eingabewert ändert Aktualisierung wird.

Ich bin neu zu Knockout, also möchte ich um etwas Hilfe mit meinem Problem bitten.

+1

Klingt wie es einen Konflikt gibt. Möglicherweise müssen Sie eine benutzerdefinierte Bindung mithilfe von Knockout durchführen. Lesen Sie diesen Artikel http://www.knockmeout.net/2011/07/another-look-at-custom-bindings-for.html –

Antwort

0

habe ich eine benutzerdefinierte Bindung Handler, um das Problem zu umgehen:

ko.bindingHandlers.dotDotDot = { 
 
    update: function (element, valueAccessor, allBindingsAccessor) { 
 
     var options = ko.utils.unwrapObservable(valueAccessor()); 
 
     var value = allBindingsAccessor().dotDotDot.Value; 
 

 
     $(element).html(value()); 
 

 
     var dotdotdot = $(element).parent().truncate(options); 
 

 
     allBindingsAccessor().dotDotDot.Value.subscribe(function (newValue) { 
 
      $(element).html(newValue); 
 
      dotdotdot.trigger("update.dot"); 
 
     }); 
 
    } 
 
};

<div class="announcement-container"> 
    <div data-bind="dotDotDot: { Value: Announcement, height: 80 }"></div> 
</div>