Как добавить новое свойство (индекс) для каждого объекта в массиве с отображением нокаута (ko.utils)?
Есть ли какая-либо утилита для добавления индекса каждого объекта в массиве в качестве свойства в нокауте JS? Я делаю это в два этапа, я хочу добавить свойство индекса для каждого объекта в то же время, которое передается в массив. Вот мой код
ko.utils.arrayPushAll(array,
ko.mapping.fromJS(result)());
for (var i = 0; i < array.length; i++) {
array[i].index = i;
}
1 ответ
С риском не ответить на ваш вопрос:
Если вы перебираете массив в привязке foreach:, у вас будет доступный наблюдаемый индекс $, чтобы вы могли ссылаться на индекс в массиве.
Если вы сделали свой массив observableArray, вы можете прикрепить computedObservable к вашей модели, которая выполняет что-то вроде:
myArray()[i].index = ko.pureComputed(()=>myArray().indexOf(myArray()[i]))
Я считаю, что индекс будет наблюдаемой, которая будет уведомлять подписчиков при изменении массива (и, следовательно, индекс должен быть пересчитан).