使用 durandal 和淘汰赛我在订阅属性方面遇到了一些问题。基本上在我的 viewAttached 方法中,我订阅了一些可观察的属性,当我加载我的视图时,这些属性在第一次工作时效果很好。在第二次加载视图时,由于订阅中的代码被执行(我不想要的东西),我遇到了一些问题。代码是这样的:
export var viewAttached = function (view) {
toDate.subscribe(function (newValue) {
isLoading(true);
return datacontext.getData(newValue).then(function () {
isLoading(false);
});
});
fromDate.subscribe(function (newValue) {
isLoading(true);
return datacontext.getData(newValue).then(function () {
isLoading(false);
});
});
}
订阅中的代码目前正在执行以第二次加载我的视图,出了什么问题。我想知道是否可以删除对此属性的订阅以卸载我的视图。那可能吗?有可能知道何时卸载视图?任何帮助都将不胜感激。
更新: 我尝试删除激活功能中的订阅(请参阅 durandal 文档),但订阅代码还在那里。
export function activate() {
//remove suscriptions
toDate.subscribe(function (newValue) {
//do nothing
});
fromDate.subscribe(function (newValue) {
//do nothing
});
}
更新: fromDate 和 ToDate 被声明为(我正在使用打字稿)
export var fromDate = <any>ko.observable();
export var toDate = <any>ko.observable();
fromDate 和 toDate 并在 activate 方法上默认设置:
function loadInitData() {
var focusDate = ko.observable(selectedDate);
fromDate(firstDayOfMonth(focusDate));
toDate(getLastDayOfMonth(focusDate));
loadFilterLookups();
loadRegistrations();
}
export function activate() {
loadInitData();
}