Dado o seguinte elemento de seleção
<select ng-options="size.code as size.name for size in sizes "
ng-model="item.size.code"
ng-change="update(MAGIC_THING)">
</select>
Existe uma maneira de fazer com que MAGIC_THING seja igual ao tamanho atualmente selecionado, para que eu tenha acesso ao size.name
e size.code
no meu controlador?
size.code afeta muitas das outras partes do aplicativo (URLs de imagem, etc.), mas quando o modelo ng item.size.code
é atualizado, ele item.size.name
precisa ser atualizado também para as coisas que o usuário enfrenta. Suponho que a maneira correta de fazer isso é capturar o evento de alteração e definir os valores dentro do meu controlador, mas não tenho certeza do que posso atualizar para obter os valores adequados.
Se esse for o caminho totalmente errado, eu adoraria saber o caminho certo.
<select>
: ng-init = "item =ng-model="selectedItem" ng-change="update(selectedItem)"
Você também pode obter diretamente o valor selecionado usando o seguinte código
script.js
fonte
você também pode tentar o seguinte:
fonte
Se a resposta de Divyesh Rupawala não funcionar (passando o item atual como parâmetro), consulte a
onChanged()
função neste Plunker. Está usandothis
:http://plnkr.co/edit/B5TDQJ
fonte
fonte
Se você deseja escrever, nome, ID, classe, múltiplos, obrigatório, você pode escrever dessa maneira.
fonte
Isso pode lhe dar algumas idéias
Modelo de exibição C # .NET
Controlador da API do .NET C # Web
Controlador angular:
Modelo angular:
fonte
Você precisa usar "rastrear por" para que os objetos possam ser comparados corretamente. Caso contrário, o Angular usará a maneira js nativa de comparar objetos.
Portanto, seu código de exemplo mudaria para -
fonte
O filtro do AngularJS funcionou para mim.
Supondo que
code/id
seja único , podemos filtrar esse objeto específico com AngularJSfilter
e trabalhar com as propriedades dos objetos selecionados. Considerando o exemplo acima:Agora, existem três aspectos importantes para isso :
ng-init="search.code = item.size.code"
- na inicialização doh1
elemento fora daselect
caixa, defina a consulta de filtro para a opção selecionada .ng-change="update(MAGIC_THING); search.code = item.size.code"
- quando você alterar a entrada de seleção, executaremos mais uma linha que definirá a consulta de "pesquisa" para a selecionada no momentoitem.size.code
.filter:search:true
- Passetrue
para o filtro para ativar a correspondência estrita .É isso aí. Se o
size.code
é ID exclusivo , teremos apenas umh1
elemento com o texto desize.name
.Eu testei isso no meu projeto e funciona.
Boa sorte
fonte
Essa é a maneira mais limpa de obter um valor de uma lista de opções de seleção angular (diferente de Id ou texto). Supondo que você tenha um Product Select como este em sua página:
Em Seu controlador, defina a função de retorno de chamada da seguinte maneira:
Simplesmente explicado: como o evento ng-change não reconhece os itens de opção no select, estamos usando o ngModel para filtrar o item selecionado da lista de opções carregada no controlador.
Além disso, como o evento é disparado antes que o ngModel seja realmente atualizado, você pode obter resultados indesejáveis. Portanto, uma maneira melhor seria adicionar um tempo limite:
fonte