Estou usando opções de ng para selecionar valores em um menu suspenso. Eu gostaria de poder comparar o valor antigo com o novo. ng-change funciona bem para obter o novo valor do pull down, mas como posso obter o novo valor e o valor original?
<select ng-change="updateValue(user)" ng-model="user.id" ng-options="user.id as user.name for user in users"></select>
Por exemplo, digamos que eu queira que o controlador registre, "Seu nome de usuário anterior era BILL, seu nome de usuário atual é PHILLIPE."
angularjs
ng-options
Bailey Smith
fonte
fonte
Respostas:
Com uma {{expression}} angular, você pode adicionar o valor user.id ou user.id antigo ao atributo ng-change como uma string literal:
No ngChange, o primeiro argumento para updateValue será o novo valor do usuário, o segundo argumento será o literal que foi formado quando a tag de seleção foi atualizada pela última vez pelo angular, com o antigo valor user.id.
fonte
user
chamada do método in é deng-model
, e não de opções de ng (pode ser enganoso). Esperançosamente, esta solução elegante funcionará também em versões futuras do angular :)user.id
for numérico ... não vai funcionar seuser.id
for string ou guidVocê também pode usar
fonte
Você pode usar algo como ng-change = someMethod ({{user.id}}). Ao manter seu valor no lado {{expression}}, ele avaliará a expressão em linha e fornecerá o valor atual (valor antes do método ng-change ser chamado).
fonte
Basta manter uma variável currentValue em seu controlador que você atualiza a cada alteração. Você pode então comparar esse valor com o novo sempre antes de atualizá-lo. '
A ideia de usar um relógio também é boa, mas acho que uma variável simples é a solução mais simples e lógica.
fonte
Você pode usar um osciloscópio:
https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch
fonte
Você poderia usar um relógio em vez disso, porque ele tem o valor antigo e o novo, mas então você está adicionando ao ciclo de resumo.
Eu apenas manteria uma segunda variável no controlador e a definiria.
fonte
$watch
dispara toda vez que a variável muda. Os observadores aumentam a complexidade e tendem a criar ciclos de atualização quando o código altera seus valores.