ko observableArray를 테이블에 바인딩 할 때 문제가 발생합니다. [jsFiddle] [1]. jsFiddle 그것은에 녹아웃 foreach 바인딩은 첫 번째 항목 만 반복적으로 표시합니다.
<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>
http://jsfiddle.net/chetanpawar0989/do6o7wtb/
은 첫 번째 항목을 보여주는 것. 그러나 과정을 추가하면 배열의 길이가 늘어나고 최신 과정이 takenCourses 배열 (경고 상자에 표시됨)에 추가됩니다. 즉 데이터를 바인딩 할 때 뭔가를 고수하고 있음을 의미합니다.또한 웹 페이지에서 동일한 코드를 실행하면 코스를 추가 할 때 첫 번째 코스가 반복적으로 표시됩니다.
제거 기능이 작동하지 않습니다.
나는 KO를 처음 접하고 기본적인 것을 배웁니다.
감사 니코을. 새로운 접근 방식은 좋지만 이전 버전의 문제가 무엇인지 알고 싶었습니다. 이전 코멘트에 따라''을 만들려고했으나 여전히 작동하지 않았습니다. –
원본 JSFiddle은'this'와'self'의 사용법을 혼합합니다. 'removeCourse' 함수 안에있는'this'의 값은 NCSUCourseModel 인스턴스의 인스턴스를 참조하지 않지만 knockout은 Course 인스턴스로 재조정합니다. –
배열을 포함하는 viewmodel의 인스턴스를 참조하기 위해 foreach 바인딩에서'$ parent'가 아니라'$ parent'를 사용해야합니다. 단순한 viewModel이 아닌 다른 것에서는'$ root'가 올바른 인스턴스가됩니다. –