一尘不染

在angularjs中,当ng-options的数组更改时,如何使“ select”刷新?

angularjs

有一个select基于任何数组的。数组中的元素可能会更改。如何获得角度控制器来刷新阵列?

module.js

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

index.html

<form ng-controller ='wordCntl'>
  <在colorArr中选择ng-model =“ color” ng-options =“ c.id作为c的c.name”>
     <option value =''>-选择颜色-</ option>
  &lt /选择>
</ form>

从控制台:

>作用域= angular.element(document.querySelector('select'))。scope();
> scope.colorArr.push({id:'bk',name:'black'});
  3
注意!选择下拉菜单仍然只有棕色和白色,没有黑色

如何select刷新以使其中的所有元素colorArr都是选项?


阅读 268

收藏
2020-07-04

共1个答案

一尘不染

Angular使用watchers,并且只有在摘要循环开始后才会更新UI

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

由于您只是直接添加到数组,因此Angular不知道任何更改,因此不会更新UI。

将您的语句换成a scope.$apply(function(){ //code });

2020-07-04