2013-02-14 85 views
1

我正在开发一个使用angular.js和d3.js的多数据应用程序。我很难将< svg>纳入我的范围。调用另一个指令的模板指令

现在发生的事情是,指令ngTests在ngRepeat执行它的方法之前被加载。

我把小提琴放在这里,让你们可以有更好的主意。

jsfiddle

<ng-chart></ng-chart> 

PS:我可以得到我的ngTests指令的TD标识,但它并没有在所有<td ng-tests id="histogram{{$index}}"更新。

如果我将此行更改为<td ng-tests id="histogram">,在我的指令中使用直方图作为ID,并将我的ngTests指令更改为只读“#histogram”,它在我的ngRepeat的第一个表上创建了6次svg,这不是结果我期待。

谢谢。

+0

如果你有一个可行的小提琴,你会得到更快的答案:)至于这个问题 - 我认为你不需要传递id到ngTests指令,你可以使用元素[0]作为d3的dom目标。选择 – 2013-02-15 06:10:43

回答

0

做两件事。在你的ngChart指令中,你有指定的索引属性,如index="index",但它需要是index="{{$index}}"。然后,从其他指令读取,而不是直接访问属性像attrs.index,你应该使用attrs.$observe更像属性值,如下:

attrs.$observe('index', function(observedIndex) { 
     console.log('observedIndex:', observedIndex); 
    }); 

这样,当指数发生变化(例如,通过其他指令)你会收到通知,并可以更新元素的文本。我拨动小提琴并使其工作here