基本上,我有两个指令:
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);
});
}]);
哪里Map
是$resource
获取 JSON 文件的实现。
我的问题是指令功能在控制器调用之前执行。也就是说,我mapData
在指令中调用了几个属性,它们都在控制台中返回 undefined 并带有相应的错误消息。但是,在错误打印输出后不久,从$resource
实现中获取的数据会执行并打印到控制台。
请注意,如果我替换$promise
and 仅依赖于
$scope.mapData = Map.mapData()
.query();
然后我在指令中$scope.mapData
可见,但不是.<donut-chart>
<ng-map>
鉴于这种结构,我如何才能将指令功能延迟到控制器加载数据之后?