基本的に、2 つのディレクティブがあります。
angular.module("maineMap")
.directive("ngMap", ["APPCONFIG", "Map", function(config, Map){
//D3 map drawing functionality based on data from $resource call
return {
restrict : "E",
transclude : true,
scope : {
mapData : '='
},
link : function(scope, el, attrs){
}
};
}])
.directive("donutChart", function(){
return {
restrict : "E",
link : function(scope, el, attrs){
}
}
});
そしてコントローラー
angular.module("maineMap")
.controller('MapCtrl', ['$scope','Map', function($scope, Map{
$scope.mapData = Map.mapData()
.query();
$scope.mapData.$promise.then(function(results){
$scope.mapData = results;
console.log($scope.mapData);
});
}]);
JSONファイルを取得するための実装ですMap
。$resource
私の問題は、コントローラー呼び出しの前にディレクティブ機能が実行されていることです。つまりmapData
、ディレクティブ内で のいくつかのプロパティを呼び出すと、それらはすべて undefined を返し、対応するエラー メッセージがコンソールに表示されます。ただし、エラー出力の直後に、$resource
実装からのデータ フェッチが実行され、コンソールに出力されます。
を置き換えて$promise
、のみに依存することに注意してください
$scope.mapData = Map.mapData()
.query();
次に、ディレクティブに$scope.mapData
表示されますが、表示されません。<donut-chart>
<ng-map>
この種の構造を考えると、コントローラーがデータをロードするまでディレクティブ機能を遅らせるにはどうすればよいでしょうか?