변경 사항을보기 모델을 모니터링하고 변경이 발생했음을 통지하는 knockout을 사용하여 시나리오를 만들려고합니다.이 작업은 정상적으로 작동하고 알림이 실행되지 않지만보기 및보기가 변경됩니다. 모델이 변경되면 알림이 다시 발생합니다.보기 모델이 삭제 될 때와 마찬가지로 속성이 계속 관찰되는 것과 같습니다.이 문제를 해결할 수있는 방법이 있습니다.노크 아웃 viewmodel 변경
var options = {
callback: function() {
var type = "modelChanged";
var subscription = $.config.core._subscriptions[type];
if (subscription) {
$.config.core._subscriptions[type] = null;
}
self.savePersonalInformation();
},
event: "forceSave",
moduleId: "MemberInformationPersonalInfo"
};
$.config.core.subscribeView(options);
참고 : 구독보기는 기본적으로 구독 둘러싼 래퍼 인 사용자 지정 익스텐더입니다.
monitorPropertyValues: function (model) {
//subscribe to each property in the model to monitor changes to the value
// loop through all the properties in the model
for (var property in model) {
if (model.hasOwnProperty(property)) {
if (model[property].subscribe) { //subcribe to observable properties
// subscribe to changes
model[property].subscribe(function(value) {
if (value) {
$.config.core.notifySubscribers(true, "modelChanged");
}
});
}
}
}
}
보기가 초기화 될 때 MonitorPropertyValues가 호출됩니다.
기본 동작은 다음과 같습니다. 각 탭마다 고유 한보기 모델이있는 페이지 목록이 있습니다. 탭을 클릭하면 뷰 모델 내에 변경 사항이 있는지 확인하려고합니다. 모든 변경 사항을 저장하기 위해 뷰 모델에 알림을 보내려는 경우.
@Tyrsius 코어를 다시 작성하려고하지 않고 확장하려고 시도하고 있지만 modelChange 알림에서 내 등록 정보를 구독 취소 할 수 없습니다. 비어 있지만 작동하지 않는 _subscription 배열을 설정하려고했습니다. – user655261