我正在编写一个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>
部分。
我该怎么办?
感谢。
答案 0 :(得分:1)
使用ng-attr- *指令代替让angular在正确的时间构造真实属性:
<line-chart ng-attr-dataurl="some_url"></line-chart>
比照http://docs.angularjs.org/guide/directive
编辑:请注意您的控制器中需要$scope.some_url
var