ng init的数学运算

时间:2014-10-23 11:26:52

标签: javascript angularjs angularjs-ng-init

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

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

输出格式为aaa1

但它不起作用。

2 个答案:

答案 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>