Ich versuche, eine 1.5-Komponente mit AngularJS zu verwenden. Ich habe einen Dienst, der meine JSON-Datei mit $ HTTP abruft und die Zusage zurückgibt. Ich löste dann das Versprechen in meinem Komponenten-Controller und weise ihm einen Wert auf dem Controller zu, der this.work
verwendet. Obwohl dies auf meiner HTML-Seite nicht angezeigt wird. Ich habe Kommentare in den Code eingefügt, um ein wenig besser zu erklären, wenn das verwirrend ist.HTTP Get Angular 1.5-Komponente
Es ist mein Verständnis, dass die Auflösung des Versprechens (in meinem Controller) asynchron passiert, aber sobald es gelöst ist, warum ich nicht die aktualisierte auf die Variable $ctrl.work
in der Ansicht geändert angezeigt. Stattdessen erhalte ich nie einen Wert von der Variablen.
// Component
(function() {
angular.module('development')
.component('pgDev', {
templateUrl: 'app/development/development.template.html',
controller: ['workList', function (workList) {
//this.work = 'HELLO WORLD'; // <- this shows up in the html if uncommented
workList.getWorkItems().then(function (d) {
console.log(d.test); // outputs: myjsonfile
this.work = d.test; // <- this doesnt show in the html
});
}]
})
}());
// HTTP Get Service
(function() {
angular.module("development").factory("workList", ["$http",
function ($http) {
return {
getWorkItems: function() {
return $http.get("data/worklist/worklist.json").then(function (d) {
return d.data;
});
}
}
}])
})();
// html
workitems: {{$ctrl.work}}
Danke. Wenn Sie wissen, oder könnte mich in die richtige Richtung zeigen, mit 'this ', um Dinge innerhalb des Controllers zuzuweisen scheint problematisch in dem Sinne, dass ich nie etwas dem Controller zuweisen könnte mit' this' innerhalb einer Funktion, da, wie Sie in Ihre Antwort, der Kontext wäre nicht mit der Controller-Komponente verbunden. Auf welche Weise sollten die Dinge gemacht werden (anstatt Pfeilfunktionen zu verwenden)? – okayilltry
Sie können den Verweis auf "this" am Anfang speichern und später verwenden: 'const self = this; ... self.work = d.test'. Aber das ist alte Schule. Die Pfeilfunktion ist die reinste Lösung. – dfsq