javascript – 如何将angularjs指令绑定到链接函数中定义的d3js节点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何将angularjs指令绑定到链接函数中定义的d3js节点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2088字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何将angularjs指令绑定到链接函数中定义的d3js节点](/upload/InfoBanner/zyjiaocheng/786/152d5face31342d48729d7ac273ba128.jpg)
我想在AngularJs应用程序中使用d3js图,然后将指令绑定到节点.
首先,我将js代码放在指令的link函数中,一切运行良好.
angular.module('myApp', []).
directive('grapheForces', function() {
return {
restrict: 'A',
link: function (scope, element) {
var width = 450;
var height = 400;
var color = d3.scale.category20();
scope.$watch('grapheDatas', function (grapheDatas) {
var force = d3.layout.force()
.charge(-120)
.linkDistance(30)
.size([width, height])
.nodes(grapheDatas.nodes)
.links(grapheDatas.links)
.start();
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
var link = svg.selectAll(".link")
.data(grapheDatas.links)
.enter().append("line")
.attr("class", "link")
.style("stroke-width", function(d) { return Math.sqrt(d.value); });
var node = svg.selectAll(".node")
.data(grapheDatas.nodes)
.enter().append("circle")
.attr("class", "node")
.attr("r", 5)
.style("fill", function(d) { return color(d.group); })
.call(force.drag);
node.append("title")
.text(function(d) { return d.name; });
force.on("tick", function() {
link.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
node.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
});
});
}
}
}).
然后我想向节点添加工具提示,所以我去:
var node = svg.selectAll(".node")
.attr("tooltip", function(){
return "tooltipTextHere";
});
当我使用angular-bootstrap时,tooltip是一个指令.
工具提示属性很好地出现在html结果中:
<circle tooltip="tooltipTextHere" class="nodeCircle" r="4.5" style="fill: #b0c4de;"></circle>
但是工具提示是无效的,因此它适用于我这样绑定的每个指令.
我想这是因为在编译阶段没有考虑到该指令,但是当我达到AngularJs中当前的理解限制时,我找不到如何做到这一点.
你知道我怎么能实现它吗?
非常感谢您的宝贵答案.
解决方法:
我已经回答了一个非常相似的question here.你可以在那里看到完整的答案.
基本上,在添加工具提示属性之后,需要使用像element.removeAttr(“graphe-forces”)之类的东西删除自定义指令属性,然后运行$compile(element)(范围),以便应用程序找到tooltip指令.
这是fiddle of a working example.
内容总结
以上是互联网集市为您收集整理的javascript – 如何将angularjs指令绑定到链接函数中定义的d3js节点全部内容,希望文章能够帮你解决javascript – 如何将angularjs指令绑定到链接函数中定义的d3js节点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。