<!DOCTYPE html>
<html >
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script>
var app= angular.module('myApp',[]);
app.controller('myController',function($scope){
$scope.fullName = 'Test'
})
</script>
<body>
<div ng-app="myApp" ng-controller="myController " ng-init="fullName='Khanh'">
<p>Full name is {{fullName}}</p>
</div>
</body>
</html>
我使用controller myController来更改应用程序变量(fullname)
我预计结果是
全名是Test
但它是
全名是Khanh
我哪里错了?
答案 0 :(得分:1)
ng-init
,因此它可以访问其变量(并可以覆盖它们)。
As per the docs,您使用ng-init
错误:
ngInit的唯一合适用途是用于别名ngRepeat的特殊属性,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。
答案 1 :(得分:0)
您应该在调用控制器时初始化变量,但如果您真的想要,可以创建一个将由ng-init调用的函数,如:
<script>
var app= angular.module('myApp',[]);
app.controller('myController',function($scope){
$scope.fullName = 'Test'
$scope.init = function(name){
$scope.fullName = name;
}
});
</script>
然后在你的ng-init中调用它:
<div ng-app="myApp" ng-controller="myController " ng-init="init('Khanh')">
执行代码的顺序如下:
它基本上回归到以合乎逻辑的方式思考这些事情:如何设置字段的值是否必须声明(并初始化)?它不能,因此,必须先对该字段进行初始化,然后才能像这样使用。