2016-11-08 105 views
0

我需要重构我的Aurelia应用程序以使其更具可扩展性。我在我的src/文件夹中有几个视图和视图模型。视图和视图模型必须位于相同的位置

我想知道是否有可能将二者分开,如:

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 - 从长远来看它不是最好分开视图,视图模型使用的是现在。你应该保持它作为一个模块在一起的观点和视图模型 –

回答

0

这是不可能产生内部视图文件夹。 这可以通过在MVC

第一步:通过“区”来完成:右键单击项目 第2步:点击新 第3步:首先选择“区域” enter image description here

+0

我甚至不知道什么是节目和你想要展示什么。顺便说一句,我没有使用IDE。我使用原子文本编辑器 – lasec0203

+0

他指的是ASP.NET mvc –

0

是,默认情况下奥里利亚强迫你为视图和视图模型使用相同的名称。但您也可以使用撰写元素从不同文件夹中选择模型和数据模型

例如,

<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()); 
}