У меня есть интернет-приложение mvc4 с областями, для моей организации каждая область представляет собой SPA, и через «Управление пакетом NuGet» я установил «Durandal 1.2.0», «Durandal Transitions 1.2.0» и «Durandal Router 1.2.0». Я упорядочил папки и удалил «представления» и «модели представлений» из папки «App» Durandal и поместил новые представления в папку «Views» области mvc4, например:
Areas-->NewArea-->Views-->ControllerFolder-->views-->shell.html
Затем я помещаю «viewmodels» в папку «Script», например:
Скрипты-->NewArea-->ControllerFolder-->viewmodels-->shell.js
Скрипты-->NewArea-->ControllerFolder-->main.js
Затем я изменил пути для JS durandal, например, в main.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» не остаются в папке «App» «Durandal».
Пожалуйста, помогите мне, как иметь разные SPA в одном проекте?