admin管理员组文章数量:1418346
have an select
based on any array. the elements in the array may change. how do I get the angular controller to refresh the array?
module.js
var langMod = angular.module('langMod', []); langMod.controller( .controller( 'colorCntl', function($scope) { $scope.color = 'wt'; $scope.colorArr = [ { id: 'br', name: 'brown' }, { id: 'wt', name: 'white' } ]; });
index.html
<form ng-controller='wordCntl' > <select ng-model="color" ng-options="c.id as c.name for c in colorArr"> <option value=''>-- chose color --</option> </select> </form>
from the console:
> scope = angular.element(document.querySelector('select')).scope(); > scope.colorArr.push( { id:'bk', name:'black' } ); 3 note! the select dropdown still only has brown and white, not black
how do I get the select
to refresh so that all elements in colorArr
are options?
have an select
based on any array. the elements in the array may change. how do I get the angular controller to refresh the array?
module.js
var langMod = angular.module('langMod', []); langMod.controller( .controller( 'colorCntl', function($scope) { $scope.color = 'wt'; $scope.colorArr = [ { id: 'br', name: 'brown' }, { id: 'wt', name: 'white' } ]; });
index.html
<form ng-controller='wordCntl' > <select ng-model="color" ng-options="c.id as c.name for c in colorArr"> <option value=''>-- chose color --</option> </select> </form>
from the console:
> scope = angular.element(document.querySelector('select')).scope(); > scope.colorArr.push( { id:'bk', name:'black' } ); 3 note! the select dropdown still only has brown and white, not black
how do I get the select
to refresh so that all elements in colorArr
are options?
1 Answer
Reset to default 26Angular uses watchers, and will only update the UI if a digest loop has been kicked off.
Normally you would be adding to the array via some event in the UI, or by calling the $http service, and those take care of kicking off a $digest() for you.
Since you are just adding directly to the array, Angular does not know anything has changed, and therefore does not update the UI.
Wrap your statement inside of a scope.$apply(function(){ //code });
instead.
本文标签:
版权声明:本文标题:javascript - in angularjs, how do you get a `select` to refresh when the array for ng-options changes? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738376548a2083482.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论