19

有一个select基于任何数组。数组中的元素可能会改变。如何让角度控制器刷新数组?

模块.js

var langMod = angular.module('langMod', []);
langMod.controller(.controller('colorCntl', function($scope) {
  $scope.color = '重量';
  $scope.colorArr = [
    { id:'br',名称:'棕色'},
    { id:'wt',名称:'white' }
  ];
});

索引.html

<form ng-controller='wordCntl' >
  <select ng-model="color" ng-options="c.id as c.name for c in colorArr">
     <option value=''>-- 选择颜色--</option>
  </选择>
</form>

从控制台:

> 范围 = angular.element(document.querySelector('select')).scope();
> scope.colorArr.push({ id:'bk', name:'black' });
  3
笔记!选择下拉菜单仍然只有棕色和白色,而不是黑色

我如何获得select刷新,以便所有元素colorArr都是选项?

4

1 回答 1

26

Angular 使用watchers,并且只会在摘要循环启动时更新 UI。

通常,您将通过 UI 中的某个事件或通过调用$http 服务添加到数组中,这些会为您启动$digest()

由于您只是直接添加到数组中,因此 Angular 不知道发生了什么变化,因此不会更新 UI。

将您的语句包装在 a 中scope.$apply(function(){ //code });

于 2013-11-09T04:42:35.690 回答