angularjs:如何将函数返回值存储在一个变量中。基于ng-repeat

时间:2017-02-23 08:52:39

标签: javascript angularjs scope return-value ng-repeat

嗨我从ng-repeat获取intrestedid,我想调用另一个服务并动态地将这些数据存储在一个变量中,因为需要发送单独的api来获取图像。

我的HTML看起来像这样

<div class="" ng-repeat="item in items" >
  <div ng-init="MyPic = getMyprofile(item.interestedTo)">
   <img src="{{MyPic}}">
  </div>
</div>

我的控制器看起来像这样。

    $scope.getMyprofile = function(IntrstdId){
    appServices.profile( IntrstdId,  function(response){
        $scope.meDetails = response.data;
    })
    return $scope.meDetails;

   }

我的服务看起来像这样。

service.profile= function(userId, callback) {
   path = serviceUrl + '/profile/'+ userId;
    $http({
        method: 'GET',
        url: path
        }).then(function(data) {
        callback(data)
    }, function(data) {});
}

但它未定义,此代码中存在任何问题。

2 个答案:

答案 0 :(得分:0)

我尝试通过创建一些抽象存根来解决这个问题,这可能对您有所帮助。如果问题仍然存在,请查看并告诉我

  

HTML

<div ng-repeat ="data_ in parentData track by $index">
    <ul>
        <li ng-repeat="result in data_.data track by $index" ng-init="counter=increaseCounter();">
         <div ng-model="counter"></div>
    </ul>
</div>
  

控制器

// It simply store variable value in scope.counter
$scope.counter = 0;
$scope.increaseCounter = function () {
    var cnt = $scope.counter++;
    return cnt;
};

//Another way is to call service while update variable vaule 
$scope.counter = 0;
$scope.increaseCounter = function () {
    var cnt = $scope.counter++;
    AppService.updateValue(cnt);
    return cnt;
};

答案 1 :(得分:0)

$scope.getMyprofile = function(IntrstdId){
   appServices.profile( IntrstdId,  function(response){
      $scope.meDetails = response.data;
  })
return $scope.meDetails;

}

我认为问题就是这个功能。 appService.profile是asyncronize方法,在完成之前它返回$scope.meDetails;

我的建议是在下面硬核一些值,看看结果。如果它正在工作,那么你必须相应地改变功能。

$scope.meDetails ='some value';
return $scope.meDetails;