#knockout.js
#knockout.js
Вопрос:
Согласно документации, beforeRemove
обратный вызов в foreach
привязке предоставит следующие параметры для вашего обратного вызова:
- В документ добавляется узел DOM
- Индекс добавленного массива
- элемент Добавленный элемент массива
Но я всегда получаю 0 в index
параметре моей функции обратного вызова. Может кто-нибудь сказать мне, что не так? Вот код:
Ответ №1:
Похоже на ошибку в knockout 3.5.0. Тот же код работает с версией 3.4.2, посмотрите на сокращенный пример ниже:
function RootViewModel(){
var self = this;
self.Items = ko.observableArray([1, 2, 3, 4, 5]);
self.BeforeRemove = function(element, ind, item) {
console.log("Index: " ind);
$(element).remove();
};
};
ko.applyBindings(new RootViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div class="container p-5">
<button data-bind="click: function () { Items.push(Items().length 1) }">Add</button>
<ul data-bind="foreach: { data: Items, beforeRemove: BeforeRemove }">
<li data-bind="text: $data, click: function (i) { $root.Items.remove(i) }"></li>
</ul>
</div>
Комментарии:
1. Я вижу, он работает правильно с этой версией. Спасибо.