ui-具有 ControllerAs 绑定的路由器

ui-router with ControllerAs binding

ui-路由器状态:

$stateProvider
    .state('dashboard', {
        url: '/dashboard',
        templateUrl: 'app/dashboard/dashboard.html',
        controller: 'DashboardController as vm'
    });

在 DashboardController 中我有:

var vm = this;
vm.title = 'Dashboard';

并且在 dashboard.html 模板中:

{{vm.title}}

为什么结果显示“{{vm.title}}”而不是绑定到它在控制器中的值?

配置状态时有一个controllerAs设置。

$stateProvider
    .state('dashboard', {
        url: '/dashboard',
        templateUrl: 'app/dashboard/dashboard.html',
        controller: 'DashboardController',
        controllerAs: 'vm'
    });

https://github.com/angular-ui/ui-router/wiki

在你的 controller function 中,你必须 return this; 在函数的末尾。

var vm = this;
vm.title = 'Dashboard';
// 
return vm;

如果我们使用 $scope 而不是 vm = this;:

$scope.title = 'Dashboard';
// 
return $scope;

祝你好运。