我正在尝试对ng init进行数学运算
<div "dt in data">
<input type="text" ng-model="dt.in" ng-init="'aaa' + $index + 1">
</div>
输出格式为aaa1
但它不起作用。
答案 0 :(得分:1)
如the docs所述,
ngInit的唯一合适用途是对特殊属性进行别名处理 ngRepeat的内容,如下面的演示所示。除了这种情况,你应该 使用控制器而不是ngInit来初始化作用域上的值。
这不是你正在做的事情。 ngInit实际上做的是 init 一个在ngRepeat范围内可用的变量。你甚至没有创建变量(我的意思是,像myVar = someValue
这样的东西),你只是在进行计算。
所以,我认为你应该放弃ngInit,而是在$ scope中创建一个函数,如:
$scope.myFunc = function(index) {
return 'aaa' + (index + 1);
}
并使用它:
<input type="text" ng-bind="myFunc($index)">
编辑:
我并不确定ng-bind
正是您想要的,特别是考虑到您使用的是<input>
。我以ng-bind
为例,您应该使用您认为更合适的任何内容。
答案 1 :(得分:0)
如果要在文本框中查看计算值,则需要更改为
ng-init="dt.in='aaa' + $index + 1"
var app = angular.module('app', []);
app.controller('fCtrl', function($scope) {
$scope.data = [
{ in : 1
}, { in : 2
}
]
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="fCtrl">
<div ng-repeat="dt in data">
<input type="text" ng-model="dt.in" ng-init="dt.in='aaa' + $index + 1">
</div>
</div>
</div>