视图和视图模型必须位于同一位置

时间:2016-11-08 04:52:21

标签: javascript aurelia aurelia-framework

我需要重构我的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

3 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:0)

在视图中生成文件夹是不可能的。 这可以通过在mvc

中使用“area”来完成

步骤1:右键单击项目 第2步:点击新的 第3步:首先选择“区域”enter image description here

答案 2 :(得分:0)

是的,默认情况下,Aurelia会强制您对视图和视图模型使用相同的名称。但您也可以使用compose元素从不同的文件夹中选择模型和数据模型

E.g。

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