基于任何数组都有select
。数组中的元素可能会改变。如何让角度控制器刷新阵列?
var langMod = angular.module('langMod', []); langMod.controller( .controller( 'colorCntl', function($scope) { $scope.color = 'wt'; $scope.colorArr = [ { id: 'br', name: 'brown' }, { id: 'wt', name: 'white' } ]; });
<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>从控制台
> 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
如何刷新select
以便colorArr
中的所有元素都是选项?
答案 0 :(得分:25)
Angular使用watchers,只有在digest loop被启动后才会更新用户界面。
通常情况下,您会通过用户界面中的某些事件或通过调用$http service添加到数组中,并且会为您启动$digest()。
由于您只是直接添加到数组,因此Angular不知道任何更改,因此不会更新UI。
将您的陈述包裹在scope.$apply(function(){ //code });
内。