2017-06-20 3 views
0

Ich verwende angularjs 1 und Knoten js für mein Projekt.Wie ruft man eine Funktion unter ng-repeat auf?

Hier zeige ich Produkte mit ng-repeat.Jedes Produkt habe ich eine Option, in sozialen Netzwerken zu teilen. Ich muss die Anzahl der Aktien von jedem bekommen, also muss ich eine Funktion aufrufen, um das Gleiche zu bekommen. Ich habe versucht, Funktion ng-init zu nennen, aber für alle Produkte seiner das letzte Produkt hier

zählen unter mein Beispielcode

 <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;   
     }); 
    }; 

Alarm zeigt korrekte Wert.

Wegen ng-repeat nimmt $scope.fbcount den letzten Wert.

Bitte mir helfen, die Lösung

Antwort

3

Ihre getfbshare Methode, um herauszufinden, setzt einen festen Wert auf den Umfang ($scope.fbcount), die von allen nachfolgenden Aufrufen der Funktion überschrieben.

Statt popc.id auf Ihre Funktion geben, können Sie die gesamte popc Objekt übergeben, dann, in der Antwort, können Sie das Objekt ändern, etwa so:

$scope.getfbshare = function(popc) 
{  
    $http.get('/api/fbcount'+popc.id).then(function(response) 
    { 
     popc.fbcount = response.data.share.share_count;   
    }); 
}; 

Dann Ihrer Ansicht nach:

Idealerweise würden Sie diese Methode in einem anderen Teil Ihres App-Lebenszyklus aufrufen als mit ng-init.

+0

Danke Oodavid. es funktioniert – Athi

Verwandte Themen