一尘不染

Angular ui-router:ui-views vs指令?

angularjs

角度UI路由器允许 多个嵌套视图
。这些可互换视图的作用似乎与指令的作用重叠。

使用(多个,嵌套的) ui-view s vs angular 指令的 利弊是什么?

更新

状态和路由是两个不同的功能。状态允许您换出partial.html模板及其控制器,并且您可以(可选地?)指定相应的URL /路由。

在Tim Kindberg(ui-router开发人员)的电子邮件回复中:

ui-view是一个指令,因此,如果使用它,则使用的是特别针对与ui-
router模块其余部分配合使用的指令。我无法想象使用自己的指令来替换此功能很容易。

对此,您似乎可以有2个选择:

普通指令:

app.directive('myDir1', {/*  controller: ... */})
   .directive('myDir2', {/*  controller: ... */})

vs ui-view“指令”

$stateProvider.state('route1', {
     /*  url: "/route1", // optional?? */
      views: {
        "myDir1": { templateUrl: "myDir1.html" /* , controller: ... */ },
        "myDir2": { templateUrl: "myDir2.html" /* , controller: ... */ }
      }
    })

奖励问题:

正常的角度指令功能提供给意见?如:

  • 包含
  • 更换
  • 隔离范围
  • 编译/链接功能

如果ui-views ARE指令,则显然它们的用法是不同的。协调这些模型是否有意义?


阅读 220

收藏
2020-07-04

共1个答案

一尘不染

如果使用Angular UI路由器的内联视图指向指令又如何呢?

假设您有一个表指令,用于处理用户帐户上的CRUD操作。我们将指令命名为user-admin。我们的路线文件如下所示:

.state('users', {
  url: '/users',
  template: "<user-admin>"
});

这会给您带来很多好处:

  • 允许您直接指向指令的网址
  • 当状态仅是指令时,消除了需要两个模板(视图模板和指令模板)的重复
  • 允许您开始在Angular 2.0的准备中将更多的控制器逻辑转移到指令中。看到这里这里
2020-07-04