我发现了一个问题,我有一个angularJS指令,当我指定一个硬编码ID时,它能够在下面的情况下追加,但是当它动态形成时,追加并不实际附加。 d3或浏览器不会抛出任何错误,但是如果你查看DOM,你会发现这些元素从未添加过。要清楚,第一行确实在两种情况下都返回一个对象。
library(sp)
library(data.table)
setDT(d_zone2)
stop_points <- as.matrix(stops[, 3:2])
short <- unique(d_zone2, by = c("Long", "Lat"))
short[, ZONE := stops[which.min(spDists(x = stop_points, y = cbind(Long, Lat))),]$X8, by=.(Long, Lat)]
指令电话:
var svg = d3.select(id)
svg.append("g")
指令模板:
<ns-my-directive width="960" height="200" uid="graph{{$index}}" data="d"></ns-my-directive>
指令js:
<svg data-ng-attr-id="{{uid}}" class='form-group' width="{{width}}" height="{{height}}"></svg>
答案 0 :(得分:0)
实际问题是d3.select()返回一个对象,无论它是否存在。真正的问题是,角度控制器代码是在模板填充变量之前执行的。解决方案如下:
controller: function($scope, $timeout){
$timeout(function(){
var id = $scope.uid;
var svg = d3.select(id)
svg.append("g")
})
})