2017-08-24 1 views
0

Ich habe ein Widget in Knockout wie folgt definiert HTML gezeigt:das Merkmal des Widget in Knockout

<div class="container"> 
    <ul data-bind="fastForEach: employees"> 
     <li class="item" data-bind="css: { 'noclose': !$parent.isCloseVisible, 'withEdit': $data.showEdit }"> 
      <div> 
       <i data-bind="click: $parent.onClick, visible: $parent.isCloseVisible" class="itemClose"></i> 
       <span class="item" data-bind="text: $data[$parent.displayText]"></span> 
       <span data-bind="if: $data.showEdit" class="withEdit"> 
        <i class="list"></i> 
       </span> 
      </div> 
     </li> 
    </ul> 
</div> 

Dieses Widget gerendert wird, wie in Bild unten gezeigt.

enter image description here

Jetzt gibt es kein Click-Ereignis behandelt für bearbeiten Symbol (Das ist nur für die Anzeige Zweck). Und ich darf den Code des Widgets nicht ändern.

Gibt es eine alternative Möglichkeit, dieses Stiftsymbol clickable zu erstellen und das Klickereignis auf meiner Seite zu verarbeiten?

+0

Sie dürfen den Code nicht ändern? Wie soll man neue Features hinzufügen? Sie müssen eine 'click: function (e) {}' Datenbindung an den '.withEdit' Block hinzufügen ... – user3297291

Antwort

1

Ich denke, man kann immer einen Standard-Click-Handler anhängen

$(".withEdit").click(function() { 
    var employee = ko.dataFor(this); 
    // do whatever you like with the employee observable 
}); 

Wenn Knockout verwendet wird, ziehe ich es nicht immer jQuery wie folgt zu verwenden und die Knock-out-Ansatz zu verwenden, aber da Sie erwähnten Sie können nicht den vorhandenen Code ändern , könnte dies die Option sein

+0

Große Antwort, vor allem angesichts der Vorgabe. –

Verwandte Themen