2015-12-28 25 views
0

我正在使用新的角度,正如我被告知 - 我摆脱了$ 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的情况下引用控制器的适当方法?

+3

'controller:'MyController as myCtrl'' – tymeJV

回答

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

+2

如果使用字符串,您也可以使用'controller:'MyController as ctrl'' –

1

使用控制器的 “控制器” 语法和VM变量:

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

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

    return vm; 
} 
  • 创建无$范围的控制器。
  • this分配给本地变量。我首选变量名称为vm,你可以选择你选择的任何名称。
  • 将数据和行为附加到变量vm
  • view上,给控制器使用控制器作为语法的别名。
  • 您可以给任何名称的别名。我更喜欢使用vm,除非我不使用嵌套控制器。