그래서 표준 Customer -> Order -> OrderLineItems 유형의 라인을 따라 상당히 표준적인 중첩 모델 구현을 사용하는 응용 프로그램에 페이지가 있습니다. 그 차이점은 OrderLineItems의 모델이 꽤 복잡하다는 것입니다.Knockoutjs - 호출 값이 너무 많이 잘못되었습니다?
관찰 할 수있는 배열과 관찰 가능 항목을 모두 사용하는 코드에서 내보기를 올바르게 업데이트하기 위해 "myObservable.valueHasMutated()"를 꽤 많이 호출하는 것으로 나타났습니다.
이 작업을 수동으로 수행해야하는 것은 아닙니다. 그러나 변경해야 할 부분을 알 수있는 위치를 모르겠습니다. 그래서 몇 가지 질문 :
- "deep/big"모델의 경우 정상입니까?
- 이 문제를 해결하기 위해 내가 알아챌 수있는 확실한 것이 있습니까?
- KO로 구현 된 이와 같은 복잡한 모델의 예가 있습니까?
내 뷰 모델이 무엇인지의 예 :
버튼 요소에 묶여self.projectsVisible = ko.observable(false);
self.toggleProjectVisibility = function() {
self.projectsVisible(!self.projectsVisible());
self.projectsVisible.valueHasMutated();
};
및 DIV가 :
<div data-bind="visible: projectsVisible">
<table>
<thead data-bind="template: {name: 'projectHeader'}"></thead>
<tbody data-bind="template: {name: 'project', foreach: projects}"></tbody>
</table>
</div>
<button type="button" data-bind="click: toggleProjectVisibility">
Toggle Projects On/Off
</button>
어쩌면 jsFiddle에서 문제가있는 것을 얻을 수 있습니까? 'valueHasMutated'를 직접 호출해야하는 경우는 거의 없습니다. 일반적으로 observable/observableArray가 보유하고 업데이트를 트리거하려는 객체/배열을 직접 수정할 때 또는 구독을 만들었을 때 즉시 트리거하려고 할 때이 옵션이 사용됩니다. 부울을 토글하는 상황에서는 필요하지 않습니다. 나는 jsFiddle이 우리가 그것을 좁히는 것을 도울 것이라고 생각한다. –
나는 비슷한 문제가 있었다. JSFiddle 여기에 : http://jsfiddle.net/b22Ex/2/ 이 질문에 http://stackoverflow.com/questions/15798881/kogrid-update-cell 그것은 내게 valueHasMutated()를 호출하는 것이 좋습니다 변경 사항이 적용됩니다. – krasnaya