FiddleLöschen von Elementen aus einem Array mit knockoutjs ES5
Ich versuche knockout.js mit der ES5-Plugin zu verwenden, aber ich bin nicht in der Lage aus einem Array zu erhalten Löschen zu arbeiten.
Es scheint etwas zu funktionieren, Sie können löschen, aber es ist immer noch ein Element im Array übrig, aber nicht wirklich irgendwie. Ich bin total verwirrt, warum das nicht so funktioniert, wie du denkst.
Was mache ich falsch?
(Ich habe ein komplexeres Szenario, das ein durandal Widget verwendet, aber ich konnte es einfach einkochen diesen, so dass ich denke, die ES5-Plugin ist der Täter)
Hier ist mein Markup:
<div data-bind="foreach: staffList" style="border:1px solid black;">
<div style="border: 1px solid red;">
<p data-bind="text: Name"></p>
<p>
<button data-bind="click: deleteClickHandler">Delete</button>
</p>
</div>
</div>
und Skript:
function ctor(){
var self=this;
self.staffList = [{Name:'one'},{Name:'two'},{Name:'three'},{Name:'four'}];
ko.track(self.staffList, { deep: true });
self.deleteClickHandler = function (obj) {
//TODO show confirm dialog first
var index = self.staffList.indexOf(obj);
if (index >= 0) {
self.staffList.splice(index, 1);
}
};
}
ko.applyBindings(ctor);
einzige andere Unterschied in der realen Welt ist, dass ich die Daten aus einem API-Aufruf bin immer, aber das Verhalten ist das gleiche.
Ich verstehe die ganze "echte Konstruktor" Sache. Da ich Durandal benutze, glaube ich, dass es Neuigkeiten gibt, aber ich muss sicherstellen, dass das nicht das Problem ist. – Nate
soweit "entfernen" betrifft; Ich hatte das zuerst, aber es gefiel mir nicht, ich dachte, das wäre ein Knockout-Zusatz, aber nicht es5? Ich werde das auch noch einmal besprechen müssen. – Nate
Der einzige Unterschied, den ich sehe, ist, dass das Verfolgen von 'self' anstelle von' staffList' etwas ändert. Lassen Sie mich dies auf meinem Code ausprobieren und sehen, ob das das Problem ist. – Nate