2016-12-05 4 views
0

Ich versuche zu tun ist, wenn ein Bild angeklickt wird, sende ich ein Array mit Informationen in die Funktion 'test', vergleichen Sie es mit Werten aus einer anderen Datenbank und dann Ich versuche die korrekte Information zurückzugeben und anzuzeigen. Der Code:Ng-Klick auf Bilder, dann zeigt Informationen aus der Datenbank

<div data-ng-repeat="hero in heroes | filter:search | orderBy:'id'"> 
    <div class="wrap"> 
    <img class="img-rounded" ng-src="images/heroes/{{hero.url}}_full.png" ng-click="test(hero.abilities)"> 
    <div class="tooltip"> 
     <p class="fat">{{hero.localizedName}}</p> 
    </div> 
    </div> 
</div>      
<div data-ng-repeat="ability in test| orderBy:'id'"> 
    {{ability.localizedName}} //Should show the information of the selected hero 
</div> 

und das Skript,

$scope.test = function(text){ 
      var newSize = text.length; 
      var temp = []; 

      for(i = 0; i < newSize; i++) 
      { 
       for(j = 0; j < $scope.abilities.length; j++) 
       { 
        if($scope.abilities[j].id == text[i]) 
        { 
        temp[i] = $scope.abilities[j]; 
        } 
       } 
      } 
      //$scope.test = temp; 
      console.log(temp); 
     } 

Wenn ich Konsolenprotokollierung bin aus temp, erhalte ich die Werte, die ich will, aber ich kann nicht die Werte wieder aus der Funktion erhalten .

Die Konsole gibt mir nur Nachrichten Fehlermeldung, dass

„test“ nicht deklariert wird

, und ich habe für diese Fehlermeldung suchen, aber ich scheine nicht zu sein Ich finde die Antwort, nach der ich suche.

Vielen Dank im Voraus!

+0

ist $ scope.test in demselben Controller als $ scope.heros? –

+0

Das $ scope.heroes liegt in der gleichen Steuerung, ja! –

+0

können Sie Ihren vollen Controller posten? –

Antwort

0

Sie versuchen test zu wiederholen:

<div data-ng-repeat="ability in test| orderBy:'id'"> 

aber test ist ein funciton.

am Ende test() Funktion, temp auf den $scope, zum Beispiel sparen:

$scope.arr = temp; 

und die Vorlage arr wiederholen ändern:

<div data-ng-repeat="ability in arr| orderBy:'id'"> 
0

Die vollständige Steuerung (mit entsprechendem Code):

function AppController($filter, $log, $scope, dotaService, abilitiesService, itemsService) 
     (..) 
    $scope.test = function(text){ 
       var newSize = text.length; 
       var temp = []; 

       for(i = 0; i < newSize; i++) 
       { 
        for(j = 0; j < $scope.abilities.length; j++) 
        { 
         if($scope.abilities[j].id == text[i]) 
         { 
         temp[i] = $scope.abilities[j]; 
         } 
        } 
       } 
       //$scope.test = temp; 
       console.log(temp); 

      //Heroes 
      var promise = dotaService.getHeroes(); 
      promise.then(function (data) 
      { 
       $scope.heroes = data.data; 
      }) 
      //Abilites 
      var promise2 = abilitiesService.getAbilities(); 
      promise2.then(function (data) 
      { 
       $scope.abilities = data.data; 
      });   
     } 
Verwandte Themen