Я использую Angular-nvD3. У меня простая диаграмма, которая выглядит так:
HTML:
<nvd3 options="options" data="data"></nvd3>
JS:
$scope.options = {
chart: {
type: 'pieChart',
height: 450,
x: function (d) { return d.key; },
y: function (d) { return d.y; },
showLabels: true,
duration: 1100,
showLegend: false
}
};
Мой объект данных - это просто массив объектов с ключевыми и y свойствами. В некоторых случаях DOM я обновляю данные с сервера и изменяю объект данных. Когда я это сделаю, моя диаграмма будет изменена.
Почему это происходит и как я могу это предотвратить?
Обновить:
// This is the function that is called on the DOM event.
var loadAllData = function () {
var result = getData();
result.$promise.then(function (returnedAmounts) {
loadChartsData(returnedAmounts.expenses, $scope.data);
}, function (error) {
// Error.
});
}
var loadChartsData = function (group, chartsData) {
// Iterate over the group
for (var i = 0; i < group.length; i++) {
chartsData[i] = {
key: group[i].name || group[i].key,
y: group[i].amount
};
}
}
попробуйте установить config.deepWatchData = false, таким образом диаграмма будет обновляться только после того, как вы сообщите об этом. (с помощью api.refresh)