Angularjs指令控制器:等待DOM准备就绪

时间:2014-03-19 11:06:18

标签: javascript angularjs dom d3.js

我正在编写一个lineChart指令,用于加载来自给定网址的数据:

<line-chart dataurl="{{ some_url }}"></line-chart>

然后在我的lineChart指令中,我有一个应该加载数据的控制器:

directive('lineChart', function() {
      return {
          restrict: 'EA',
          scope: {
              dataurl: '@'
          },
          controller: function($scope, $http){

            $http.get($scope.dataurl)
                .success(function(data) {
                    $scope.data = data;
                });
          },
          link: function(scope, element, attrs) {
              ...

这里的问题是在DOM准备好之前调用控制器,这意味着dataurl =&#34;&#34;我收到404错误。我想有一个使用$ timeout服务的解决方案,但我不需要整个DOM准备好,只需要<line-chart>部分。 我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:1)

使用ng-attr- *指令代替让angular在正确的时间构造真实属性:

<line-chart ng-attr-dataurl="some_url"></line-chart>

比照http://docs.angularjs.org/guide/directive

编辑:请注意您的控制器中需要$scope.some_url var