こんにちは、私は Durandal 、ノックアウト、および renderjs を使用して SPA アプリケーションを構築しています。あるページから別のページに移動するときに問題が見つかったようです。
これは私の現在のモデルがどのように見えるかです:
define(['services/logger', 'services/dataService', 'durandal/plugins/router'],
function (logger, dataService, router) {
var allModulesObservableCollection = ko.observableArray();
var isInitialized = false;
var activeSaIdParameter = "";
var vm = {
//bindable
title: ko.observable(''),
dataLoading: ko.observable(false),
hasErrors: ko.observable(false),
errorMessage: ko.observable(''),
courseName: ko.observable(''),
allModules: allModulesObservableCollection,
//operations
refreshData: refreshData,
showActiveModules: showActiveModules,
activate: activate,
};
return vm;
function activate(context) {
logger.log('All Modules View Activated', null, 'allModules', true);
if (!isInitialized) {
activeSaIdParameter = context.activeSaId;
isInitialized = true;
fetchModulesData(context.activeSaId);
return fetchHeaderData(context.activeSaId);
} else {
if (context.activeSaId != activeSaIdParameter) {
activeSaIdParameter = context.activeSaId;
fetchModulesData(context.activeSaId);
return fetchHeaderData(context.activeSaId);
}
}
}
function fetchModulesData(activeSaId) {
vm.dataLoading(true);
vm.hasErrors(false);
return dataService.getAllModulesInCourse(activeSaId)
.then(fetchModulesCompleted)
.fail(fetchDataFailed);
function fetchModulesCompleted(data) {
allModulesObservableCollection(data);
debugger;
vm.dataLoading(false);
}
}
function showActiveModules() {
var url = '#/activeModules/' + activeSaIdParameter;
router.navigateTo(url);
}
});
初めてデータが正しく表示され、すべて正常に動作しますが、別のページに移動してからこのページに戻ろうとすると、ブラウザが JavaScript コードを完全に無視するようになります。
ShowActiveModules() は、ユーザーを兄弟ページに移動させる責任があります。
デバッグ中に、このページに戻った後、ブラウザーがこのコードを実行しなくなったことに気付きました。データを取得して表示するには、ページを完全に更新する必要があります。
誰が私が間違っているのか教えてもらえますか?