【发布时间】:2014-03-18 14:18:25
【问题描述】:
我正在处理一个涉及更新出现在圆圈内的文本元素的可视化。比如:
<g>
<circle></circle>
<text>My text that needs updating</text>
</g>
除了这个小视觉效果外,还有一个 d3 画笔用作滑块。在刷子/刷子上,我需要<text>Update the text here</text>,基于与滑块 x 轴上的时间刻度相关的数据。
我有两个 Angular 指令。一个包含圆圈,另一个是滑块。在我调用的滑块指令中:
$rootScope.$emit('brushing'); 并根据我的数据设置一个 rootScope 变量,$rootScope.myNewValue = newValue; 发生滑动
然后我在我的另一个指令中监听这个,并将 text.attr 更新为 rootScope var:
$rootScope.$on('brushing', function () {
myText.text($rootScope.myNewValue);
});
地点:
var myText = svg.append('text')
.text('I'm trying to update this text..');
...在代码的 d3 部分
这样做好像行得通,不过我想知道有没有办法在初始化myText的时候直接绑定数据:
var myText = svg.append('text)
.text($rootScope.myNewValue);
这样值就可以直接更新而无需$emit和listen。我在指令中尝试了scope.$apply,但这似乎没有效果。
有没有人在使用 d3 和 Angular 时遇到过类似的情况?
【问题讨论】:
-
您是否尝试过仅使用角度绑定将文本绑定到变量?这是一篇关于直接将 SVG 与 Angular 结合使用的好文章:alexandros.resin.io/angular-d3-svg
-
感谢您的资源。我会看看这个。
标签: javascript angularjs d3.js