Angular.js:在动态网站中使用指令
Angular.js: using Directives in dynamic website
所以我正在动态构建一个表格,就像这样
<tbody ng-repeat="d in data">
<td>{{d.name}}</td>
<td>{{d.dircleColor}}</td>
<td id="a{{d.index}}>{{d.someOtherData}}</td>
...
"data"是一个数组,在控制器中$scope.data。基本角度,效果很好。
现在,我还必须将一个 svg 元素 (D3.js) 添加到其中一个动态生成的
这些必须对应于同样基于 $scope.data 的可视化,以便图表中的红色圆圈对应于表中的红色圆圈,并且用户知道在哪里查找信息。
我最大的希望是指令
.directive('dirCircle', function () {
return function ($scope, elm, attrs) {
var vis = d3.select(elm[0]).append("svg").attr("width", w).
attr("height", h).attr("class", "circlesClass");
node.append("svg:text") [... more styling...]
这有效,但目前我不知道如何告诉指令,我的小 svg-circle 元素应该有哪种颜色。此信息位于 $scope.data - 数组中。但仅仅访问$scope是不够的。我需要绘制"当前"元素的信息。这可能吗?
如果无法做到这一点,以下是一些可能的解决方法:
1)如果指令可以变得"自我意识"并环顾放置它的DOM,那可能会有所帮助。请注意,在我上面的代码中,我<td id="a{{d.index}}>...
d.index 标识我的数组中的相关数据,那么如果我可以从我的指令访问 $scope.data...?
2)像往常一样生成D3,但将其放入动态生成的表格单元格中,如下所示:
for (var i = 0; i < _data.length; i++) {
var svgContainer = d3.select("#a" + _data[i].index).append("svg") //circleData[0].ci
.attr("width", 20)
.attr("height", 20)
.attr("class", "circlesOnTheRight");
然而,来自"html-template"(ng-repeat/{{...}} - stuff)的"编译"总是在最后。如果将新元素添加到数组中,我的函数将始终在 angular 创建新表单元格之前触发。当我尝试它时,甚至$scope.$on('includeContentLoaded', alert("..."));在角度完成之前开火。
我不知道如何告诉指令,我的小 svg 圆圈元素应该有哪种颜色。此信息在 $scope.data 中
将颜色作为属性传递到将使用指令的同一元素上(无论在哪里):
<some_element dir-circle the-color="d.color??"></some_element>
然后在您的指令中:
return function ($scope, elm, attrs) {
// $scope.$eval(attrs.theColor) contains your color
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- 如何识别我的网站中的慢速设备
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 使用每次都不同的transclude重复指令
- 用Javascript更改我网站上的字体大小
- 有任何可能将facebook实时信使整合到一个网站中
- 打开一个模态并将其链接到AngularJS中的指令
- 从html创建一个指令,该指令按类名应用函数
- 将电视直播频道从网站嵌入我的网站
- 将JSON对象传递给angular指令
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- Windows 8固定的网站互动程序
- JavaScript指令不能像我想象的那样工作
- 门户网站:当地时间有多有用
- AngularJs指令,该指令创建内部有数据对象的新指令
- 在一个简单的网站上违反了内容安全策略指令
- 使用指令对网站的HTML结构进行模块化
- 在指令中使用scope后,我的网站不再响应
- Angular.js:在动态网站中使用指令