javascript - Angular Material md-chips not refreshing correctly -


i developing app works "widget layout".

the user gets page dashboard different widgets can interact with, such table, graphs etc.

i adding global "filter" using <md-chips>, objective of having filters shared widgets , can updated widgets.

my filter list uses <md-chips>, read-only , md-removable set true. filters can deleted, or added interacting widgets (so added programmatically).

one of feature of "module" add new filter on field when graph element is clicked.

example :

here filters list before clicking graph element filters empty

now click on graph element in child controller of filter controller, $emit event global controller : "i want update filters ! here filter add"

and filter controller event , update filters accordingly ($scope.tags list of filters , model used in <md-chips>)

  // chips   $scope.tags = [];   $scope.readonly = true;   $scope.removable = true;    // filter listener   $scope.$on('filterchildchanged', function (event, filter) {     $scope.tags.push(filter);     console.log($scope.tags);     console.log("parent event fired !");   }); 

at point expect <md-chips>element refresh, because $scope.tags got new filter :

<md-chips     ng-model="tags"     readonly="readonly"     md-removable="removable"     id="filters">     <md-chip-template>{{$chip.value}}</md-chip-template>     </md-chips> 

but instead, nothing happens! , weird part is, refreshes when click on 1 of existing chip (i had "test" chip) !

tests : when push test chip on array before rendering :

$scope.tags.push({field: "testfield", value: "test"}); 

enter image description here

and click on bunch of graph elements, $scope.tags updated, visual stays same until select chip "test", <md-chips> appear triggered refresh function.

enter image description here

any hint on why <md-chips> element not refreshed $scope.tags (its model) updated but updated when chip selected ?

i tried trigger md-on-select force behavior happen every time add new filter $scope.tags got no luck far !

thanks reading !

note : using latest version of angular material (head master) see doc here : https://material.angularjs.org/head/ | built github repository.

edit : problem comes $$hashkey not being added objects, added when click on 1 of existing tags, need find way add $$hashkey attribute when add new filter

the problem came absence of $$hashkey when added new filter filters model chips ($scope.tags).

so needed change

$scope.tags.push(filter); 

to

$scope.$apply(function () {     $scope.tags.push(filter); }); 

and here console.log test enter image description here

good thing learned : <md-chips> directive knows needs updated if <chip> objects have $$hashkey

see this on scope.$apply


Comments

Popular posts from this blog

sql - invalid in the select list because it is not contained in either an aggregate function -

Angularjs unit testing - ng-disabled not working when adding text to textarea -

How to start daemon on android by adb -