我正在为我的项目使用angularjs 1和node js。
这里我使用ng-repeat显示产品。每个产品我都可以选择在社交网络中分享。我需要获得每个的共享计数,所以我需要调用一个函数来获得相同的。 我试图调用函数ng-init,但是对于所有产品,它都是最后一次产品计数
这是我的示例代码
<div ng-repeat="(key,popc) in product" class="courses-outer-div">
<div class="courses-text-div">
<div class="course-title-div">
{{popc.Title}}
</div><br />
<span class="ash-txt-sml">{{popc.ListFee|currency:"₹":0}}</span><br/>
<div class="common-left pad-top-10"><span class="blue-txt">Share</span><br />
<a target="_blank" href="http://facebook.com/sharer.php?u=url&i=imagurl" target="_blank">
<img src="images/share-fb.png" width="24" height="23" alt="" /></a>
<div ng-init="getfbshare(popc.id)">{{fbcount}}</div>
</div>
</div></div>
Controller.js
$scope.getfbshare = function(id)
{
$http.get('/api/fbcount'+id).then(function(response)
{
alert("f"+response.data.share.share_count)
$scope.fbcount = response.data.share.share_count;
});
};
警告显示正确的值。
由于ng-repeat
$scope.fbcount
正在取最后一个值。
请帮我找出解决方案
答案 0 :(得分:3)
您的getfbshare
方法在范围($scope.fbcount
)上设置了一个固定值,该值将被对该函数的任何后续调用覆盖。
您可以传递整个popc.id
对象,而不是将popc
传递给您的函数,然后在响应中,您可以修改对象,如下所示:
$scope.getfbshare = function(popc)
{
$http.get('/api/fbcount'+popc.id).then(function(response)
{
popc.fbcount = response.data.share.share_count;
});
};
然后,在您看来:
<div ng-init="getfbshare(popc)">{{popc.fbcount}}</div>
理想情况下,您应该在应用生命周期的不同部分调用该方法而不是使用ng-init
。