2016-04-13 8 views
0

Ich verwende den folgenden Code Mit dem Ergebnis eines Forschungs anzuzeigen:

<table> 
    <tr ng-repeat="x in result"> 
    <td><div ng-click="display(x)">{{x}}<div></td> 
    </tr> 
</table> 

ich folgende $http.post Abfrage verwenden, um Werte zu $scope.result:

$http.post('server.php', {"data" : $scope.keywords, "serverQuery" : "chercherAssociation"}) 
.success(function(data, status) 
{ 
    $scope.result = data; 
} 

ich brauche aber den Code, so etwas zu ändern:

<table> 
    <tr ng-repeat="x in result"> 
     <td><div ng-click="display(x.id)">{{x.name}}<div></td> 
    </tr> 
</table> 

So muss $scope.result zwei Sätze von Werten haben: ID und Name. Wie mache ich das?

Ich habe versucht, die folgenden:

$scope.result.name = ... 
$scope.result.id = ... 

und einigen Variationen, aber es hat nicht funktioniert (nichts im <table> auftauchen).

+0

Ich denke '$ scope.result' ist ein Array, so dass Sie' indexer' wie '$ scope.result [0] .name', Anmerkung:' 0' für das erste Element verwenden können – Satpal

+0

Ihre Frage ist nicht klar. Was ist die Form von "Daten"? –

Antwort

1

Ich glaube, Sie müssen ein Element $ scope.result gleiche wie hinzufügen:

$scope.result = []; 
$scope.result.push({id: .., name: ...}) 
-1

Sie $ scope.result als Array-Objekt definieren, wobei jedes Objekt in diesem Array hat zwei Attribute: id und namen .like dies:

var $scope.result = []; 
var one = {"id":1,"name":"hello"}; 
var two = {"id":2,"name":"world"}; 
$scope.result[0] = one; 
$scope.result[1] = two; 

haben einen Versuch.

0

eine Schleife nach dem AJAX-Aufruf Sie und Ihre neuen Ergebnisse Array füllen:

$scope.result = []; 

$http.post('server.php', {"data" : $scope.keywords, "serverQuery" : "chercherAssociation"}) 
.success(function(data, status) { 
    data.forEach(function (item) { 
     // item.id & item.name is an example, uses what you need to get the values 
     $scope.result.push({id: item.id, name: item.name}); 
    }); 
} 

Auf jeden Fall ist es besser, etwas Klasse oder Fabrik zu definieren, so dass es leichter sein wird für zukünftige Änderungen zu verwalten:

module.factory("MyClass", [ function() { 
    var MyClass = function (remoteData) { 
     this.id = remoteData.id; // Or whatever you get your id 
     this.name = remoteData.name; // Or whatever you get your name 
    }; 

    return MyClass; 
}]); 

Dann ist Ihre Klasse in Ihrem controiller injizieren oder was auch immer und es verwenden, anstatt roh Objekte verwenden wie {id: ..., Name: ....}

Genießen

Verwandte Themen