Javascript ng嵌套数据更改后重复不更新
我有一个指令,它使用d3.js绘制一些东西,如果我绘制它,它是什么取决于我范围内的数据。我的问题是,我无法让它在更改后重新绘制内容,我尝试了使用$scope.$apply的变体,但迄今为止还没有成功 HTML:Javascript ng嵌套数据更改后重复不更新,javascript,angularjs,d3.js,angularjs-directive,angularjs-ng-repeat,Javascript,Angularjs,D3.js,Angularjs Directive,Angularjs Ng Repeat,我有一个指令,它使用d3.js绘制一些东西,如果我绘制它,它是什么取决于我范围内的数据。我的问题是,我无法让它在更改后重新绘制内容,我尝试了使用$scope.$apply的变体,但迄今为止还没有成功 HTML: 下面是一个出现问题的plunker:?将指令更改为: app.directive('draw', function() { return { scope: { value: "=" //<--- }, link: function
下面是一个出现问题的plunker:?将指令更改为:
app.directive('draw', function() {
return {
scope: {
value: "=" //<---
},
link: function (scope, element, attrs){
scope.$watch("value", function(val) {
//draw stuff with val
});
}
}
app.directive('draw',function(){
返回{
范围:{
值:“=”//attrs.value!=0将此更改为attrs.value!==0;js文件1中还有两个其他javascript警告。for(key in$scope.data)应为for(var key in$scope.data)如果我将其更改为!==它将为0绘制一个圆,我希望它为所有不是0的值绘制一个圆。谢谢!现在我的问题是,如果已经有圆,它将绘制另一个圆,但这是另一个问题:)是的,您需要使用d3更新数据,或者只是清理并再次绘制
var app = angular.module('App', []);
app.controller('Mainctrl', function ($scope, $timeout) {
$scope.data =
[{avg: 0},
{avg: 1}];
$timeout(function (){
var i = 1;
for (key in $scope.data){
$scope.data[key].avg = i++;
};
}
,3000)
});
app.directive('draw', function() {
return {
scope: {
value: "@"
},
link: function (scope, element, attrs){
if (attrs.value != 0) {
var svgContainer = d3.select(element[0]).append("svg").attr("width", 200).attr("height", 200);
var circle = svgContainer.append("circle").attr("cx", 30).attr("cy", 30).attr("r", 20);
}
}
}
});
app.directive('draw', function() {
return {
scope: {
value: "=" //<---
},
link: function (scope, element, attrs){
scope.$watch("value", function(val) {
//draw stuff with val
});
}
}
<body ng-app="App" ng-controller="Mainctrl">
<div ng-repeat="val in data">
<div draw value="val.avg">{{val.avg}}</div>
</div>
</body>