我正在尝试更新渲染地图的数据值。我使用一个 jquery 插件,jVectorMap。
问题是当我尝试更新数据集时,一个新图表会附加到 dom 中,就在旧图表之后。
Plunkr:http ://plnkr.co/edit/eTyLpb3dAJf3AAmjrqDX?p=preview
app.directive('map', function() {
return {
restrict: 'EAC',
link: function(scope, element, attrs) {
scope.$watch("mapdata" , function(n,o){
$(element).width('auto')
$(element).height(400)
$(element).vectorMap({
backgroundColor: 'transparent',
regionStyle: {
initial: {
fill: '#cccccc'
}
},
series: {
regions: [{
values: scope.mapdata,
scale: ['#C8EEFF', '#0071A4'],
normalizeFunction: 'polynomial'
}]
},
});
});
}
};
});
另一种方法可能是这样的:
app.directive('map', function() {
return {
restrict: 'EAC',
link: function(scope, element, attrs) {
var chart = null;
var data = scope.datamap;
scope.$watch("data" , function(n,o){
if(!chart){
$(element).width('auto')
$(element).height(400)
chart = $(element).vectorMap({})
}else{
chart.vectorMap('set', 'colors', {us: '#000000'});
console.log(chart)
}
});
}
};
});
Plunkr: http ://plnkr.co/edit/ib3Rgz?p=preview
使用这种方法,我可以更改背景颜色,但不能更改状态颜色...