ビューモデルの変更を監視し、変更が発生したことをサブスクライバーに通知するノックアウトを使用してシナリオを作成しようとしています。これは正常に機能し、通知はオフになりますが、ビューを変更するとビューモデルが変更され、通知が再度発生します、ビューモデルが破棄されているときにプロパティがまだ監視されているようなものですが、この動作を回避する方法はありますか?
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 は、ビューが初期化されるときに呼び出されます。
私が達成しようとしている基本的な動作は次のとおりです。ページにタブのリストがあり、各タブには独自のビューモデルがあります。タブをクリックすると、ビューモデル内で変更があったかどうかを確認したい。ある場合は、ビュー モデルに通知を送信してすべての変更を保存します。