ngmodelchange event change angularjs ng-options

angularjs - event - ng-< change angular



ng-change obtiene nuevo valor y valor original (6)

Con una {{expression} angular, puede agregar el valor user.id o user anterior al atributo ng-change como una cadena literal:

<select ng-change="updateValue(user, ''{{user.id}}'')" ng-model="user.id" ng-options="user.id as user.name for user in users"> </select>

En ngChange, el primer argumento de updateValue será el nuevo valor de usuario, el segundo argumento será el literal que se formó cuando la etiqueta de selección se actualizó por última vez por angular, con el antiguo valor de user.id.

Estoy usando ng-options para seleccionar valores de un menú desplegable. Me gustaría poder comparar el valor anterior con el nuevo valor. ng-change funciona bien para agarrar el nuevo valor del desplegable, pero ¿cómo puedo obtener tanto el nuevo valor como el original?

<select ng-change="updateValue(user)" ng-model="user.id" ng-options="user.id as user.name for user in users"></select>

Por ejemplo, supongamos que quería que el controlador iniciara sesión, "Su nombre de usuario anterior era BILL, su nombre de usuario actual es PHILLIPE".


Podría usar un reloj en su lugar, porque tiene el valor antiguo y el nuevo, pero luego está agregando al ciclo de resumen.

Solo mantendría una segunda variable en el controlador y establecería eso.


Puede usar algo como ng-change = someMethod ({{user.id}}). Al mantener su valor en el lado {{expression}}, evaluará la expresión en línea y le dará el valor actual (valor antes de llamar al método ng-change).

<select ng-model="selectedValue" ng-change="change(selectedValue, ''{{selectedValue}}'')">



Simplemente mantenga una variable de valor actual en su controlador que actualice en cada cambio. Luego, puede comparar eso con el nuevo valor antes de actualizarlo ".

La idea de usar un reloj también es buena, pero creo que una simple variable es la solución más simple y lógica.


También puedes usar

<select ng-change="updateValue(user, oldValue)" ng-init="oldValue=0" ng-focus="oldValue=user.id" ng-model="user.id" ng-options="user.id as user.name for user in users"> </select>