1

我正在尝试对 ng init 进行数学运算

    <div "dt in data">
     <input type="text" ng-model="dt.in" ng-init="'aaa' + $index + 1">
    </div>

以 aaa1 格式输出

但它不起作用。

4

2 回答 2

1

正如文档所述,

ngInit 唯一合适的用途是为 ngRepeat 的特殊属性设置别名,如下面的演示所示。除了这种情况,您应该使用控制器而不是 ngInit 来初始化作用域上的值。

这不是你在做什么。ngInit 实际上做的是初始化一个在 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了一个例子,你应该使用你认为更合适的任何东西。

于 2014-10-23T11:50:13.363 回答
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>

于 2014-10-23T11:59:55.320 回答