Fiddleудаление элементов из массива с knockoutjs ES5
Я пытаюсь использовать knockout.js с плагином ES5, но я не в состоянии получить удаление из массива на работу.
Кажется, что вы работаете, но вы можете удалить его, но в массиве всегда остался один элемент, но на самом деле это не так. Я совершенно смущен, почему это не работает, как вы думаете.
Что я делаю неправильно?
(у меня есть более сложный сценарий, который использует Дюрандаль виджет, но я был в состоянии варить его вниз, чтобы только это, так что я думаю, что ES5 плагин является виновником)
Вот моя разметка:
<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>
и сценарий:
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);
единственное различие в реальном мире является то, что я получаю данные от вызова API, но поведение такое же.
Я понимаю всю вещь «настоящего конструктора». Поскольку я использую durandal, я верю, что это новость в ctor, но я должен буду убедиться, что это не проблема. – Nate
касается 'remove'; У меня было это поначалу, но мне это не нравилось, я думал, что это дополнение к нокауту, но не es5? Мне тоже придется это пересмотреть. – Nate
Единственная разница, которую я вижу, заключается в том, что отслеживание 'self' вместо' staffList' что-то меняет. Позвольте мне попробовать это на моем коде и посмотреть, не является ли это проблемой. – Nate