【问题标题】:Template directive calling another directive模板指令调用另一个指令
【发布时间】:2013-02-14 19:49:51
【问题描述】:

我正在开发一个使用 angular.js 和 d3.js 的多数据应用程序。我很难将 纳入我的范围。

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

我把小提琴放在这里,以便你们有更好的想法。

jsfiddle

<ng-chart></ng-chart>

PS:我可以在我的 ngTests 指令中获取 td id,但它根本不会更新 &lt;td ng-tests id="histogram{{$index}}"

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

谢谢。

【问题讨论】:

  • 如果你有一个可行的小提琴,你会更快得到答案:) 至于这个问题 - 我假设你不需要将 id 传递给 ngTests 指令,你可以使用 element[0] 作为d3.select 的 dom 目标

标签: javascript angularjs d3.js angularjs-directive


【解决方案1】:

做两件事。在您的 ngChart 指令中,您指定了 index 属性,例如 index="index",但它必须是 index="{{$index}}"。然后,要从另一个指令中读取属性值,而不是像attrs.index 那样直接访问属性,您应该使用attrs.$observe,更像如下:

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

这样,当索引更改时(例如,通过另一个指令),您会收到通知并可以更新元素的文本。我分叉了小提琴并让它工作了here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多