2016-07-23 12 views
0

Ich schreibe in JS-Datei und versuchen, jedes Element durchlaufen und fügen Sie diese "self.renderButtons". wenn ich auf Löschen klicke, sollte ich die remove-Funktion aufrufen. Es tut das nicht, kann jemand helfen?Datenbindung in der. Js-Datei

 self.renderButtons = function (id) { 
    return ('<a href="' + '/Product/' + id + '" class="btn btn-sm btn-primary btn-margin-right"><span class="fa fa-file-text-o"></span> Details</a>' 
    + '<button class="btn btn-sm btn-danger" data-bind="click: removeItem"><span class="glyphicon glyphicon-trash"></span>&nbsp;Delete</button>'); 
} 
self.removeItem = function (item) { 
    $(document).trigger('loader-show'); 
    self.service.delete(item.Id, self.handleDelete, self.handleError); 
}; 
+0

Welcher Teil Ihres Codes funktioniert nicht? Ist in der Browser-Konsole ein Fehler sichtbar? –

+0

Wenn ich auf die Schaltfläche Löschen klicke, wird die Funktion removeItem nicht aufgerufen. In der Konsole ist kein Fehler aufgetreten. f_martinez – Ajay

+0

Entweder werden Schaltflächen hinzugefügt, nachdem alle Bindungen bereits angewendet wurden (dh 'Klick'-Bindungen werden überhaupt nicht verarbeitet), oder Sie sollten den richtigen Kontext für' removeItem' angeben (z. B. '$ root.removeItem'). Bitte denken Sie daran, Ihre Frage zu erweitern, indem Sie weitere Details über Ihr Modell und wie die Methode 'renderButtons' verwendet wird, hinzufügen. –

Antwort

0

Die Manipulation des DOM ist Knockouts Aufgabe. Wenn Sie eine Schaltfläche haben möchten, die jedem Element eines Arrays entspricht, ist dies ein Job für die foreach binding. Sie manipulieren das ObservableArray und Knockout sorgt dafür, dass das DOM diesen Zustand widerspiegelt.