ng在嵌套数据发生变化后重复不更新
ng-repeat not updating after change in nestled data
我有一个指令,它使用d3.js绘制一些东西。我绘制的内容和是否绘制取决于我范围内的数据。我的问题是,我无法让它在更改后重新绘制内容,我尝试过带有$scope的变体$申请,到目前为止还没有成功。
HTML:
<body ng-app="App" ng-controller="Mainctrl">
<div ng-repeat="val in data">
<div draw="" value="{{val.avg}}">{{val.avg}}</div>
</div>
</body>
JS:
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);
}
}
}
});
下面是一个问题重现的plunker:http://plnkr.co/edit/V62WngzpmsBWh6zSHCcM?
将指令更改为:
app.directive('draw', function() {
return {
scope: {
value: "=" //<---
},
link: function (scope, element, attrs){
scope.$watch("value", function(val) {
//draw stuff with val
});
}
}
}
你的html是:
<body ng-app="App" ng-controller="Mainctrl">
<div ng-repeat="val in data">
<div draw value="val.avg">{{val.avg}}</div>
</div>
</body>
这是更新后的plunkr:http://plnkr.co/edit/pIN8iy77QY5n4THqIcLp?p=preview
相关文章:
- GoogleMapsForRails-只有在搜索结果发生变化时才通过ajax更新标记
- AngularJS视图没有'当ng模型值发生变化时,t更新
- ReactJS-这个状态中的数组在删除时被正确更新,但结果是't,直到以后的状态发生变化
- Ng重复不随数组变化而更新
- 如何在数量发生变化时自动更新合计
- 如何在 AngularJs 中的数据库发生变化时立即实现自动视图更新
- AngularJS:如何在指令范围的对象发生变化时更新与控制器作用域相关联的控制器作用域
- 当Firebase数据发生变化时,Google 图表不会更新
- 一旦 JavaScript 中任何 HTML 元素的值发生变化,就会更新画布
- 检索到的 $().position() 更新为 position: absolute 后发生了变化
- 添加标记并在纬度和经度变化时更新标记
- Angular ngClass 没有更新我的类,即使我的条件按预期发生了变化
- Angularjs 指令更新到 DOM 属性值的变化
- 当角度$scope发生变化时,不要更新 HTML
- Spotfire Java脚本将字段拆分为唯一值,并每30秒更新一次MapChart可视化,以反映值的变化
- 范围变量以角度更新,但变化不会反映给用户
- 可观测集合发生变化时更新Div
- 实体位置发生变化时未进行可视化更新
- 使用angular2更新服务中组件的可变变化
- 用ng变化更新角度模型