У меня возникли проблемы с попыткой получить число из каждого элемента в наблюдаемом массиве нокаута и добавить числа вместе и назначить его другой вычислимой переменной. Вот что я прямо сейчас ...Нокаут arrayForEach undefined property
Semesters: ko.observableArray([
{
semesterName: "Fall",
semesterCode: "300",
PlannedCourses: ko.observableArray([]),
totalCredits: ko.computed(function(){
var total = 0;
ko.utils.arrayForEach(this.PlannedCourses, function (course) {
total += course.MinHours();
});
return total;
}),
},
...
То, что я пытаюсь сделать, это, в переменной totalCredits, я пытаюсь перебирать массив PlannedCourses и получить переменную MinHours для каждого элемента и добавить их вместе в общей переменной. Затем я возвращаю его в элемент totalCredits в массиве Semesters. Проблема, с которой я сталкиваюсь, заключается в получении переменной PlannedCourses в части ko.utils.arrayForEach. Я получаю undefined на нем, и я не уверен, почему. Я думаю, что это простая синтаксическая ошибка, но я не вижу, что случилось.
Наблюдаемый массив PlannedCourses - это динамический объект, который правильно получает список PlannedCourses. Он определяется в контексте самого себя, но я не передаю его в вычисляемую функцию totalCredits должным образом.
Надеюсь, это достаточно ясно. Спасибо за помощь!
Примечание: вся остальная часть кода работает по назначению. Единственной частью, которая не работает, является вычисляемая функция totalCredits. Я не уверен, что что-то внутри ko.utils.arrayForEach работает, поскольку я не смог зайти так далеко.
Это, наверное, лучший подход. Я собираюсь сделать много реструктуризации, но, без сомнения, я должен это делать. Я ценю это. Я пытаюсь включить несколько различных методов viewModel, и это усложняет ситуацию. Сейчас «Semesters» - это элемент, который является частью еще одного массива «Years», который имеет «academwork» и «Semesters», который структурирован так же, как и «Semesters». Если я переработаю оба списка так, как вы указали, это должно сработать. Тем не менее, это займет некоторое время. Я скоро вернусь к вам, если это сработает. Еще раз спасибо! –
Если вы создаете несколько объектов с одинаковыми свойствами/функциями и т. Д., Это будет обычный подход. –
Это сработало. Еще раз спасибо @JamesThorpe. –