Ich werde eine Diagrammbibliothek namens Plotly verwenden. Ich erstelle eine Anweisung, damit ich die Bibliothek mit angularJS verwenden und bei Bedarf in Zukunft wiederverwenden kann.AngularJS: Zugriff json Antwort in Link-Funktion innerhalb der Direktive
Ich möchte ein Objekt an die Direktive übergeben, das zum Erstellen des Graphen verwendet wird. Diese Objekte werden über einen Aufruf geladen. Hier ist der Code:
REGLER:
angular.module("app").controller("appDetailsController",
['$scope', '$http', function($scope, $http) {
$scope.graphData = {}
$http.get('/api/analytics/24').then(function(data) {
console.log('Loaded analytics data:', data);
$scope.graphData = data.data
})
}])
RICHTLINIE:
angular.module("app").directive("timelineGraph", function() {
return {
restrict: "E",
scope: {
data: "="
},
link: function(scope, element, attr) {
console.log("scope data:", scope, scope.data)
}
}
})
HTML:
<timeline-graph data="graphData"></timeline-graph>
In "scope" in der Link-Funktion kann ich sehen, dass das Datenobjekt ist da, aber es ist nur gefüllt, nachdem der Anruf getätigt wurde. So habe ich herausgefunden das funktionieren würde und es tut:
scope.$watch('data', function(data) {
if(data)
console.log('data changed:', data)
})
Aber ich würde gerne wissen, ob es ein besserer Weg, diese andere Handhabung als habe meinen gesamten Code in dem Uhr-Handler.