初始化角度控制器变量

问题描述:

我遇到了一个问题,我的控制器变量没有根据控制器代码正确初始化。初始化角度控制器变量

控制器代码

angular.module('test') 
    .controller('RegisterCtrl', function RegisterCtrl($scope) { 
var vm = this; 
    vm.model = {companyName:'aaa'}; 
    vm.data= [{fieldtype: 'input',key:'companyName'}]; 
}); 

ui的路由器是

.state('register', { 
     //  abstract: true, 
     url: "/register", 
     templateUrl: "/views/register.html", 
     controller: 'RegisterCtrl', 
     controlleras: 'vm' 
     }) 

我有一个验证基本的HTML来显示模型的输出:

<h2>Model</h2> 
<pre>{{vm.model }}</pre> 

在调试代码在铬中通过控制器代码并正确设置模型和数据,但当页面有fini时棚加载vm.model是空白。我不知道我做错了什么。

在此先感谢。

+0

['ui-router']的状态配置对象(https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider)没有' controlleras'属性。你需要在你的'controller'属性中指定它(也就是'controller:'RegisterCtrl as vm'')。 – miqid

+2

@miqid其实,它确实,但它是区分大小写的。它是'controllerAs'。这是一个简单的错字。 – Claies

+0

@Claies,我的坏!确实如此。文档中只有两个表格行。 :-( – miqid

尝试使用这个作为你的HTML身体标记:

<body ng-controller="RegisterCtrl as vm" ng-app="test"> 

而不是VAR,我会建议你使用$ scope.model,为了这个目的

angular.module('test') 
.controller('RegisterCtrl',['$scope',function($scope) { 
    $scope.model = { 
        companyName:'aaa' 
        }; 
    $scope.data= [ 
       { 
        fieldtype: 'input', 
        key:'companyName' 
       } 
       ]; 
}]); 

HTML

<h2>Model</h2> 
<pre ng-bind="model.companyName"></pre> 
<pre>{{model.companyName}}</pre> 
<pre>{{model}}</pre>