Ich versuche, ein direction-Element zu erstellen, das den Wert eines Attributs benutzt, um eine http-Anfrage zu machen und die Antwort auszudrucken. Der Teil, der den Wert des Attributs verwendet, um eine http-Anfrage zu stellen, wird durch Verwendung der $ attrs in einem Controller abgedeckt, der mit der Direktive assoziiert ist. Wenn ich jedoch versuche, die Daten mit drei verschiedenen Attributwerten im selben Dokument auszugeben, geben alle Anweisungen die gleichen Daten aus.Wie verwendet man ein Attribut in einer Direktive, um Daten auszuwählen
ich gemacht habe ein Plunker meines Codes mein Problem
Grundsätzlich zu zeigen, was soll ich tun, um, ist dies:
<person personNumber='person1'></person>
<person personNumber='person2'></person>
<person personNumber='person3'></person>
Meine Daten von example.com/{person-number} :
Person 1:
{
name: "John",
city: "New York"
}
Person 2:
{
name: "Bob",
city: "Los Angeles"
}
Person 3:
{
name: "Jay",
city: "San Diego"
}
gewünschte Ausgabe:
John: New York
Bob: Los Angeles
Jay: San Diego
Was erhalte ich:
Jay: San Diego
Jay: San Diego
Jay: San Diego
Was Sie sehen, ist, dass alle Werte auf die letzte HTTP-Anfrage geändert haben. Ich weiß nicht, wie ich das beheben soll.
Hier ist mein Winkelcode (auch sichtbar in Plunker):
var app = angular.module('app', []);
app.controller('personController', ['$scope', '$attrs', function($scope, $attrs) {
//mock json response
var people = {
person1: {
name: "John",
city: "New York"
},
person2: {
name: "Bob",
city: "Los Angeles"
},
person3: {
name: "Jay",
city: "San Diego"
}
};
//mock $http.get to an api with url (www.example.com/{person})
var self = this;
function mockHttpGetService() {
self.info = people[$attrs.personNumber];
}
mockHttpGetService();
}
]);
app.directive('person', function() {
return {
restrict: 'E',
templateUrl: 'template.html',
controller: 'personController',
controllerAs: 'person'
};
}
);
und meine Vorlage:
<p>{{person.info.name}}: {{person.info.city}} </p>
Frage
ich denke, es etwas damit zu tun haben könnte, die "scope" Eigenschaft der Direktive, jedoch habe ich alle verschiedenen Versionen ('=', '@', '< ',' & '), aber ich kann es nicht zur Arbeit bringen.
Könnten Sie mir bitte helfen?
Vielen Dank für Ihre Lösung! – FeatherNL