javascript en angularjs, ¿cómo se obtiene un `select` para actualizar cuando cambia la matriz para ng-options?



ng-change select (1)

Angular utiliza watchers y solo actualizará la interfaz de usuario si se ha iniciado un ciclo de resumen .

Normalmente, usted estaría agregando a la matriz a través de algún evento en la interfaz de usuario, o llamando al servicio $ http , y estos se encargarán de iniciar un resumen de $ () para usted.

Como solo está agregando directamente a la matriz, Angular no sabe que haya cambiado nada y, por lo tanto, no actualiza la interfaz de usuario.

Envuelva su declaración dentro de un scope.$apply(function(){ //code }); en lugar.

tener una select basada en cualquier matriz. Los elementos de la matriz pueden cambiar. ¿Cómo consigo el controlador angular para actualizar la matriz?

módulo.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>

desde la consola:

> 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

¿Cómo obtengo la opción de actualizar para que todos los elementos en colorArr sean opciones?





angularjs-scope