2016-11-08 3 views
0

Мне нужно изменить структуру приложения Aurelia, чтобы сделать его более расширяемым. В моей папке src/ у меня есть несколько видов и моделей.Do Views and View-models должны находиться в одном и том же месте

Я хочу знать, если это возможно, чтобы отделить два типа:

src/views/ 
src/view-models/ 

затем в каждом из этих двух каталогов, дополнительно выделить как:

src/views/admin/admin.html 
src/view-models/admin/admin.js 

src/views/user/user.html 
src/view-models/user/user.js 
+0

@ Iasec0203 - В долгосрочной перспективе его не рекомендуется, чтобы отделить и вид-моделирует вы используете прямо сейчас. Вы должны держать его как view, так и view-model вместе как модуль –

ответ

0

Это невозможно сформировать папку внутри зрения , это может быть сделано с помощью «область» в MVC

Шаг 1: Щелкните правой кнопкой мыши на проекте Шаг 2: нажмите на новом Шаг 3: сначала выберите «Область» enter image description here

+0

Я даже не знаю, какая программа и что вы пытаетесь показать. Кстати, я не использую IDE. Я использую текстовый редактор атома – lasec0203

+0

Он имеет в виду ASP.NET mvc –

0

Да, по умолчанию Aurelia заставляет вас использовать одно и то же имя для просмотра и View-model. но вы также можете использовать элемент compose для выбора модели и datamodel из разных папок.

E.g.

<compose view-model="./src/view-model/some-view" model.bind="./src/model/some-view" />

2

ли Виды и-модели должны быть в том же месте?

Не обязательно. Это скорее соглашение/рекомендация, чем ограничение. В документации есть некоторые сведения о том, как customize conventions.

Пример main.js

Это отменяет все, но у вас есть свобода, чтобы переопределить вид пути частично.

E.g. if (moduleId.indexOf('specific-module-name') !== -1) ...

export function configure(aurelia) { 
    aurelia.use 
    .standardConfiguration(); 

    // locator override 
    ViewLocator.prototype.convertOriginToViewUrl = (origin) => { 
    let moduleId = origin.moduleId, 
       id = (moduleId.endsWith('.js') || moduleId.endsWith('.ts')) ? moduleId.substring(0, moduleId.length - 3) : moduleId, 
     viewPath = id.replace('view-models/', 'views/') + '.html'; 

    return viewPath; 
    }; 

    aurelia.start().then(() => aurelia.setRoot()); 
}