В настоящее время у меня есть настройки, которые выглядят так:
ko.applyBindings(viewModel);
$(".removeButton").live("click", function() {
viewModel.ProductCategories.destroy(ko.dataFor(this));
});
$(".renameButton").live("click", function() {
ko.dataFor(this).Name("Renamed Successfully!");
});
Это работает нормально для меня, пока я не представлю концепцию дочерних элементов. В этот момент событие удаления больше не работает для этих элементов.
Есть ли более общий способ "уничтожения" элемента?
KO, очевидно, знает элемент, на который я нажимаю (как я могу переименовать).
[{"Id":1,"Name":"Bikes","Parent":null,"Children":[{"Id":5,"Name":"Mountain Bikes","Parent":1,"Children":null},{"Id":6,"Name":"Road Bikes","Parent":1,"Children":null},{"Id":7,"Name":"Touring Bikes","Parent":1,"Children":null}]},{"Id":2,"Name":"Components","Parent":null,"Children":[{"Id":8,"Name":"Handlebars","Parent":2,"Children":null},{"Id":9,"Name":"Bottom Brackets","Parent":2,"Children":null},{"Id":10,"Name":"Brakes","Parent":2,"Children":null},{"Id":11,"Name":"Chains","Parent":2,"Children":null]}]
Все вышеперечисленные события будут работать с любым элементом (дочерним или другим), за исключением удаления, которое работает только с корневыми элементами.
Могу ли я вызвать remove для самого элемента или мне придется добавить какой-нибудь способ выяснить, где он находится внутри массива, и уничтожить его таким образом?
например; это предпочтительно:
$(".removeButton").live("click", function() {
ko.dataFor(this).destroy();
});
к этому:
$(".removeButton").live("click", function() {
viewModel.ProductCategories[someindex].Children.destroy(ko.dataFor(this));
});
Спасибо,
Кохан