2017-05-22 2 views
0

Nehmen wir ein ObservableArray mit einigen Einträgen an. Ich möchte für jedes von ihnen ein komplexes HTML-Element haben. Ich verwendete Komponenten, um Vorlagen wiederzuverwenden:ko.js: Eintrag aus observableArray entfernen aus

<!-- ko foreach: searchResults --> 
    <entry class="..." params="entry: $data"></entry> 
<!-- /ko --> 

Rendern dieser Elemente funktioniert einwandfrei. Das Problem: Es gibt einen "x" -Knopf in jedem dieser Artikel, der es dem Benutzer erlauben sollte, die Gegenstände zu löschen. Gibt es eine Möglichkeit, das Array mit dem Array zu manipulieren? Wie auf den Eltern zugreifen?

+0

Aufruf eine Klasse-Funktion mit dem Index der einer „x“ Taste und dann ausgeschnitten? – TeaTime

+0

Es gibt einen '$ parent'-Gültigkeitsbereich in ko, aber ideal ist es, auf eine eindeutige ID aus dem Geltungsbereich zuzugreifen und den erforderlichen Wert aus dem Array – Rajesh

+0

zu entfernen. Verwenden Sie den [Bindungskontext] (http://knockoutjs.com/documentation/binding-context .html). Beachten Sie, dass bei Verwendung eines ['click'] (https://stackoverflow.com/documentation/knockout.js/7101/bindings-form-fields/7835/click#t=201705221437399261205) oder anderen' Ereignis'-Bindings ein Aufruf erfolgt Methode, der 'this' Kontext wird auf das Kind, nicht auf den Eltern festgelegt. Ie .: Sie müssen $ $ parent.removeEntry.bind ($ parent) 'schreiben. – user3297291

Antwort

0

ich es mit dem richtigen ko-Scoping lösen könnte:

<entry class="..." params="entry: $data, removeItem: $parent.removeItem"></entry>