2015-12-03 178 views
0

我遇到了一個問題,我的控制器變量沒有根據控制器代碼正確初始化。初始化角度控制器變量

控制器代碼

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

回答

0

嘗試使用這個作爲你的HTML身體標記:

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

而不是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>