Angular模板中的局部变量

时间:2015-01-21 20:51:57

标签: angularjs

以下是计划编写的代码:

<div ng-repeat="row in rows">
  <div ng-init="localVar = someComplicatedFunction(row)">
     {{localVar.someValue}}
     {{localVar.someOtherValue}}
  </div>
<div>

但这是docs中的警告:

  

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

我不明白我在这里被告知的是什么。如果没有ng-init,我怎么会要求控制器在这里做任何事情?

2 个答案:

答案 0 :(得分:0)

警告意味着ngInit仅适用于例如&#34;重命名&#34; $index更合适的名称。

除此之外,您可以按如下方式使用控制器:

angular.module('yourModule').controller('RowCtrl', function($scope) {
    $scope.localVar = $scope.someComplicatedFunction($scope.row);
});

然后你可以在你的模板中使用它:

<div ng-repeat="row in rows" ng-controller="RowCtrl">
    {{localVar.someValue}}
    {{localVar.someOtherValue}}
<div>

答案 1 :(得分:0)

它试图说的是控制器通常应该构建您想要使用的任何值。

在您的控制器中运行您的复杂功能,存储结果,并将其用于ng-repeat

app.controller('MyController', ['$scope', function ($scope) {
    function someComplicatedFunction(row) {
        return { someValue: ':-)', someOtherValue: ':-<' };       
    } 

    var rows = obtainRows();

    $scope.processedRows = rows.map(someComplicatedFunction);
}]);
<div ng-repeat="row in processedRows">
   {{row.someValue}}
   {{row.someOtherValue}}
<div>