初始化角度控制器变量
问题描述:
我遇到了一个问题,我的控制器变量没有根据控制器代码正确初始化。初始化角度控制器变量
控制器代码
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是空白。我不知道我做错了什么。
在此先感谢。
答
尝试使用这个作为你的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>
['ui-router']的状态配置对象(https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider)没有' controlleras'属性。你需要在你的'controller'属性中指定它(也就是'controller:'RegisterCtrl as vm'')。 – miqid
@miqid其实,它确实,但它是区分大小写的。它是'controllerAs'。这是一个简单的错字。 – Claies
@Claies,我的坏!确实如此。文档中只有两个表格行。 :-( – miqid