Получение проблемы при привязке ko наблюдаемого массива к таблице. [jsFiddle] [1].нокаут foreach привязка только с отображением первого элемента повторно
http://jsfiddle.net/chetanpawar0989/do6o7wtb/
<tbody data-bind="foreach: $root.TakenCourses"> <tr> <td> <span data-bind="text: courseName"></span></td> <td> <span data-bind="text: courseCredits"></span></td> <td> <button data-bind="click: removeCourse">Remove</button></td> </tr> </tbody>
На jsFiddle это просто показывает первый пункт. Однако, когда я добавляю курс, длина массива увеличивается, и последние курсы добавляются к массиву takeCourses (можно увидеть в окне предупреждения). Это означает, что я собираюсь что-то связать с данными.
Также, когда я запускаю тот же код на своей веб-странице, он неоднократно показывает первый курс, когда я добавляю курс.
Функциональность удаления также не работает.
Я новичок в KO и изучаю основы.
спасибо Niko. Новый подход хорош, но просто хотел узнать, в чем проблема со старым. Я попробовал сделать '' в соответствии с вашим предыдущим комментарием, но все равно он не работал. –
Ваш оригинальный JSFiddle смешивает использование 'this' и' self'. Значение 'this' внутри' removeCourse' не будет ссылаться на экземпляр экземпляра NCSUCourseModel, но нокаут будет перерисовываться на экземпляр курса. –
Вы должны использовать '$ parent', а не' $ root', в привязке foreach, чтобы ссылаться на экземпляр viewmodel, содержащий массив. В чем-то другом, кроме упрощенного вида, будет правильный аргумент '$ root'. –