angularjs中怎么保证一个directive一定是在一个run方法执行完成之后再加载?

run方法中执行了一个http请求来获取数据:
BlogApp.run(['$rootScope', '$http',

function($rootScope, $http) {
$http({
    method: 'GET',
    url: 'http://localhost:3000/posttag'
  }).then(function(response) {
     //这里是需要的数据
    $rootScope.tags = response.data;
  }, function(response) {
    // 请求失败执行代码
    console.log('request failed');
  });
}

]);

// 在指令上绑定了run方法中获取的数据
BlogApp.directive('appPostTag', ['$http', function($http) {
return {

templateUrl: '/view/template/postTag.html',
restrict: 'ECAM',
replace: true,
scope: {
  // postTagDatas: '='
},
controller: ['$rootScope', '$scope', function($rootScope, $scope) {
  $scope.postTagDatas = $rootScope.tags;
}],
link: function ($scope) {
 
}

};
}]);

run方法肯定是先于指令执行的,但是由于http请求是异步的,指令执行时数据并没有回调回来,导致tags是undefined,请问有办法让指令在run的请求之后再加载么,或者有其他什么办法可以满足我的这种需求?

还有一种办法是在controller中进行数据的请求,然后在html标签上通过属性进行数据的传递,但是这样我试过也会出现指令先于controller加载的情况。。。

阅读 3k
3 个回答

可以内部给个初始化的值 舒大哥

试一下使用广播实现

新手上路,请多包涵

试了一下在回调函数里广播,真的实现了,谢谢2楼

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题