Chartjs-Dynamically set data on Angular-chart.js

1👍

The controller doesn’t notice when the value in your factory changes. To include your item-Array in an Angular digest-cycle, tell Angular to $watch that Array.

If you don’t want to expose the Array, create a getter:

itemsService.get = function() { return items; }

Then you can include that getter in your $watch expression in your controller:

$scope.$watch(getItems, watcherFunction, true);
function getItems() {
    return pieItems.get();
}

The getItems-Function gets called on digest cycle and fires the watcherFunction if the value changed and has the newData as argument. true as 3rd argument creates a deep watch.

function watcherFunction(newData) {
     console.log(newData);
     // do sth if array was changed
}

For more complex objets, you can use a $watchCollection.

Leave a comment