我在自定义指令的link函数中有以下代码,该指令使用d3 ...
生成动态映射map.append("g")
.selectAll("path")
.data(topojson.feature(counties, counties.objects.counties).features)
.enter()
.append("path")
.attr("d", geoPath)
.attr("class", function (d) {
return "county {{vm.showSalesAreas.data ? vm.getClass('" + d.properties.COUNTYFP + "') : ''}}";
})
.attr("ng-class", function (d) {
return "{'active': vm.toggleActiveCountyFP == " + d.properties.COUNTYFP + ", 'highlight': vm.fipsList.data.indexOf('" + d.properties.COUNTYFP + "') > -1 && vm.showSalesAreas.data == false}";
})
.attr("id", function (d) {
return d.properties.COUNTYFP;
})
.attr("tooltip-append-to-body", true)
.attr("uib-tooltip", function (d) {
return d.properties.NAME;
})
.call(function () {
$compile(this[0].parentNode)(scope);
});
仅供参考,vm.salesAreas.data
是布尔值
如何将这两者合并为一个表达式,以减少观察者的数量?
我一直在战斗的问题是"类"当我将它放在表格' classname'中的ng-class属性表达式中时,.attr()似乎无法正确评估。 :boolean因为classname来自vm.getClass()调用。想法?
我尝试过使用下面这一行但是尽管vm.getClass()返回了正确的类名并且在源检查中可见,但它无法应用该类......:
.attr("ng-class", function (d) {
return "{'active': vm.toggleActiveCountyFP == " + d.properties.COUNTYFP + ", 'highlight': vm.fipsList.data.indexOf('" + d.properties.COUNTYFP + "') > -1 && vm.showSalesAreas.data == false, '{{::vm.getClass('" + d.properties.COUNTYFP + "')}}': vm.showSalesAreas.data, 'county': true}";
})