在ng-repeat中调用异步函数

时间:2016-03-09 10:58:19

标签: angularjs

我试图在ng-repeat中调用异步函数。我确信这不是正确的方法,但想知道正确的' Angular方式'

 <tr ng-repeat="app in multipleApps">
    <td><h4> {{ app.Name }} </h4></td>
    <td><h4> {{ getActivationDate(app.Name) }} </h4></td>
</tr>

在控制器中,getActivationDate调用一个返回promise的工厂函数。所以我需要知道如何在ng-repeat中使用这个函数。

 $scope.getActivationDate = function(name)
 {
    Service.getActivationDate(appName)
       .then(function(response) {


            var ts = response.activated_at;   
            var date = new Date(ts *1000);
            console.log(date.toDateString());
            return   date.toDateString();

       },
       function(error)
       {
            $scope.error = true;
       });
 }

 Service.getMultipleApps()
    .then(function(data) {
        $scope.$apply(function () {
            $scope.multipleApps = data;

        });
  });

由于

1 个答案:

答案 0 :(得分:3)

您可以尝试:

<tr ng-repeat="app in multipleApps" ng-init="getActivationDate(app)">
    <td><h4> {{ app.Name }} </h4></td>
    <td><h4> {{ app.activationDate }} </h4></td>
</tr>

getActivationDate函数中:

$scope.getActivationDate = function(app) {
  Service.getActivationDate(app.name)
    .then(function(response) {
       var ts = response.activated_at;   
       var date = new Date(ts *1000);
       app.activationDate = date;
     },
   // ...
};