来自html的角度引用控制器,不带$ scope

时间:2015-12-28 15:04:29

标签: html angularjs scope alias

我正在使用新的角度,正如我被告知的那样 - 我正在摆脱$ scope对象。

因此,当我从html页面引用我的控制器时,我使用别名引用它:

<div ng-controller="MyController as ctrl">
    <p>{{ ctrl.Hello }}</p>
</div>

我的问题是:当我使用路线时,我宣布我的一条路线为:

$stateProvider.state('myPage', {
  url: "/myPage",
  templateUrl: "./views/myPage.html",
  controller: 'MyController'
  })

在不使用$ scope的情况下,在这种情况下引用控制器的适当方法是什么?

2 个答案:

答案 0 :(得分:3)

ui-router支持带有属性的controllerAs

$stateProvider.state('myPage', {
  url: "/myPage",
  templateUrl: "./views/myPage.html",
  controller: 'MyController',
  controllerAs: 'ctrl'
})

更多信息 https://github.com/angular-ui/ui-router/wiki

答案 1 :(得分:1)

将控制器与“controller as”语法和vm变量一起使用:

function MyController() {
    // VM represents the View’s Model (aka ViewModel)
    var vm = this;

   // exports
   vm.item = "Test item";

   return vm;
}
  • 创建一个没有$ scope的控制器。
  • this分配给本地变量。我首选变量名为vm,您可以选择任意名称。
  • 将数据和行为附加到vm变量。
  • view上,使用控制器作为语法为控制器提供别名。
  • 您可以为别名指定任何名称。除非我不使用嵌套控制器,否则我更喜欢使用vm。