Dado el siguiente elemento de selección
<select ng-options="size.code as size.name for size in sizes "
ng-model="item.size.code"
ng-change="update(MAGIC_THING)">
</select>
¿Hay una manera de conseguir MAGIC_THING ser igual al tamaño seleccionado en ese momento, así que no tengo acceso a size.name
, y size.code
en el controlador?
size.code afecta a muchas de las otras partes de la aplicación (URL de imágenes, etc.), pero cuando item.size.code
se actualiza el modelo ng de , también item.size.name
debe actualizarse para el usuario que enfrenta cosas. Supongo que la forma correcta de hacer esto es capturar el evento de cambio y establecer los valores dentro de mi controlador, pero no estoy seguro de qué puedo pasar a la actualización para obtener los valores adecuados.
Si esta es la manera completamente incorrecta de hacerlo, me encantaría saber la forma correcta.
<select>
: ng-init = "item = tamaños [0]"ng-model="selectedItem" ng-change="update(selectedItem)"
También puede obtener directamente el valor seleccionado utilizando el siguiente código
script.js
fuente
también podrías probar esto:
fuente
Si la respuesta de Divyesh Rupawala no funciona (pasando el elemento actual como parámetro), consulte la
onChanged()
función en este Plunker. Está usandothis
:http://plnkr.co/edit/B5TDQJ
fuente
fuente
Si desea escribir, nombre, id, clase, múltiple, requerido, puede escribir de esta manera.
fuente
Esto podría darte algunas ideas
.NET C # Ver modelo
Controlador de API web .NET C #
Controlador angular:
Plantilla angular:
fuente
Debe usar "seguimiento por" para que los objetos se puedan comparar correctamente. De lo contrario, Angular usará la forma nativa js de comparar objetos.
Entonces su código de ejemplo cambiaría a -
fuente
El filtro de AngularJS funcionó para mí.
Suponiendo que
code/id
es único , podemos filtrar ese objeto en particular con AngularJSfilter
y trabajar con las propiedades de los objetos seleccionados. Considerando el ejemplo anterior:Ahora, hay 3 aspectos importantes para esto :
ng-init="search.code = item.size.code"
- al inicializar elh1
elemento fuera delselect
cuadro, establezca la consulta de filtro en la opción seleccionada .ng-change="update(MAGIC_THING); search.code = item.size.code"
- cuando cambie la entrada de selección, ejecutaremos una línea más que establecerá la consulta de "búsqueda" a la seleccionada actualmenteitem.size.code
.filter:search:true
- Pasetrue
al filtro para permitir una coincidencia estricta .Eso es. Si
size.code
es uniqueID , solo tendremos unh1
elemento con el texto desize.name
.He probado esto en mi proyecto y funciona.
Buena suerte
fuente
Esta es la forma más limpia de obtener un valor de una lista de opciones de selección angular (que no sea Id o Texto). Suponiendo que tiene un producto seleccionado como este en su página:
Luego, en su controlador, configure la función de devolución de llamada de la siguiente manera:
Simplemente explicado: dado que el evento ng-change no reconoce los elementos de opción en la selección, estamos utilizando ngModel para filtrar el elemento seleccionado de la lista de opciones cargada en el controlador.
Además, dado que el evento se dispara antes de que el ngModel se actualice realmente, puede obtener resultados no deseados, por lo que una mejor manera sería agregar un tiempo de espera:
fuente