以下是计划编写的代码:
<div ng-repeat="row in rows">
<div ng-init="localVar = someComplicatedFunction(row)">
{{localVar.someValue}}
{{localVar.someOtherValue}}
</div>
<div>
但这是docs中的警告:
ngInit的唯一合适用途是用于别名ngRepeat的特殊属性,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。
我不明白我在这里被告知的是什么。如果没有ng-init
,我怎么会要求控制器在这里做任何事情?
答案 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>