1.2 から 2.0 に変換されたアプリを読み込もうとすると、コンソール ウィンドウに「ルートが見つかりません」というメッセージが表示されます。失敗した時点でどのルートを見つけようとしているかをデバッグする方法はありますか? 「ルートが見つかりません:/viewmodels/wrongfolder/startup」などと表示されたら便利です!
1.2 から 2.0 にアップグレードする前は、これらすべてが完全に機能していたことに注意してください。そのため、Durandal 設定の違いに対処する必要があります。ファイルが削除されたり、失われたり、移動されたりしていないため、nuget によって更新されているスクリプトの新しいバージョン以外のアプリで変更があったわけではありません。
main.js と config.js は「app」フォルダーのルートにあります。Shell.js は app/viewmodels にあり、shell.html は app/views にあります。すべてのビュー/ビューモデルは、メインの /app フォルダーの下の関連フォルダーにあります。
ルートが返された「config.js」ファイルがあります。
var routes = [{
route: 'home',
moduleId: 'home',
title: 'Home',
nav: true
}, {
route: 'labTool',
moduleId: 'labTool',
title: 'Lab Tool',
nav: true
}];
var startModule = 'labTool';
main.js:
//specify which plugins to install and their configuration
app.configurePlugins({
router: true,
dialog: true,
widget: false
});
app.start().then(function () {
viewLocator.useConvention();
router.makeRelative({ moduleId: 'viewmodels' });
app.setRoot('viewmodels/shell');
router.handleInvalidRoute = function (route, params) {
logger.logError('No route found', route, 'main', true);
};
});
Shell.js:
var inEditMode = ko.observable(false); //set edit mode to false at start
var shell = {
activate: activate,
router: router,
inEditMode: inEditMode
};
return shell;
function activate() {
return datacontext.primeData()
.then(boot)
.fail(failedInitialization);
}
function boot() {
logger.log('Application Loaded!', null, system.getModuleId(shell), true);
router.map(config.routes).buildNavigationModel();
return router.activate(config.startModule);
}
function failedInitialization(error) {
var msg = 'App initialization failed: ' + error.message;
logger.logError(msg, error, system.getModuleId(shell), true);
}
一部のコードは、1.2 から 2.0 への変更を処理するためにまだ編集が必要な場合がありますが、現在はほとんどのコードが揃っていると思います。