私の組織では、各エリアがSPAを表し、「Manage NuGet Package」を通じて「Durandal 1.2.0」、「Durandal Transitions 1.2.0」、および「Durandal Router 1.2.0」をインストールしました。フォルダーを整理し、Durandal のフォルダー「App」から「views」と「viewmodels」を終了し、新しいビューを mvc4 領域のフォルダー「VIews」に配置します。たとえば:
Areas-->NewArea-->Views-->ControllerFolder-->views-->shell.html
次に、「ビューモデル」を「スクリプト」フォルダーに入れます。たとえば、次のようにします。
スクリプト-->NewArea-->ControllerFolder-->viewmodels-->shell.js
スクリプト --> NewArea --> ControllerFolder --> main.js
次に、main.js などで durandal の JS のパスを変更しました。
define(['../../../App/durandal/app',
'../../../App/durandal/viewLocator',
'../../../App/durandal/system',
'../../../App/durandal/plugins/router',
'../../../App/services/logger'],
そして、次の行で main.js を変更しました。
viewLocator.useConvention('viewmodels', '../Areas/NewArea/Views/ControllerFolder/views');
しかし、次の行がその定義でモジュール「viewLocator」を何度も呼び出し、デフォルト値で「useConvention」の構成を書き換えるため、フォルダーの構成は失敗します。
app.setRoot('viewmodels/shell', 'entrance');
この現象は、"views" および "viewmodels" フォルダーが "Durandal" の "App" フォルダーに含まれていない場合にのみ発生します。
同じプロジェクトでさまざまな SPA を使用する方法を教えてください。