【发布时间】:2015-11-21 16:41:58
【问题描述】:
我正在使用 $scope.exchange 将数据发送到 ng3 图表。我希望图表添加一个新值并删除最旧的值。所以我从来没有超过3分。它目前每秒增加 3 个点,但从不删除任何点。如果我将带有 slice 的行更改为 $scope.exchange = [],图表将绘制前 3 个并且不再更新。如果我使用被注释掉的 while 循环,那么图表会每秒重新绘制所有内容。这会闪烁屏幕,看起来很难看。我能做什么?
(function(){
var app = angular.module('exchange-directives', []);
app.directive('tableRows', function() {
return {
restrict: 'E',
templateUrl: "js/directives/tableRow.html",
scope:'=',
link: function(scope, elements, attrs){
},
controller: ['$http', '$timeout', '$scope', function($http, $timeout, $scope) {
var table = this;
table.rows = [];
var count = 0;
var retrieveItems = function() {
if($scope.exchange.length != 0) $scope.exchange.slice(3);
//while($scope.exchange.length){
// $scope.exchange.pop();
//}
$http.get('/dashboard/history').success(function(data){//change back to '/dashboard/rates' when aws goes back online
table.rows = data;
for (i = 0; i < 3; i++){
var vals = {
x: count++,
dates: data.dates[i],
rates: data.rates[i]
}
$scope.exchange.push(vals);
}
$timeout(retrieveItems, 1000);
});
}
retrieveItems();
}],
controllerAs: "table",
};
});
})();
【问题讨论】:
-
数组切片返回数组部分的浅拷贝。您实际上并没有修改数组本身。
-
我不知道如何解决这个问题,但以下试验失败了。 $scope.exchange = $scope.exchange.slice(3);
标签: javascript arrays scope