He buscado en Google y no puedo encontrar nada al respecto.
Tengo este codigo
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
></select>
Con algunos datos como este
options = [{
name: 'Something Cool',
value: 'something-cool-value'
}, {
name: 'Something Else',
value: 'something-else-value'
}];
Y la salida es algo como esto.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">Something Cool</option>
<option value="1">Something Else</option>
</select>
¿Cómo es posible establecer la primera opción en los datos como el valor predeterminado para obtener un resultado como este?
<select ng-model="somethingHere" ....>
<option value="0" selected="selected">Something Cool</option>
<option value="1">Something Else</option>
</select>
javascript
angularjs
html-select
iConnor
fuente
fuente
a **single** hard-coded <option> element ... can be nested into the <select> element.
opciones no pueden formar parte del marcado.Respuestas:
Simplemente puede usar ng-init así
fuente
Si desea asegurarse de que su
$scope.somethingHere
valor no se sobrescriba cuando se inicializa su vista, querrá fusionar (somethingHere = somethingHere || options[0].value
) el valor en su ng-init de la siguiente manera:fuente
options
estar vacío? Como en el caso de que losoptions
datos provengan de una fuente externa.ng-init="somethingHere= somethingHere || 'Select one' "
Lo intenté así. Pero no funcionó. lo que está mal en mi códigoPrueba esto:
HTML
Javascript
Plunker aquí .
Si realmente desea establecer el valor que estará vinculado al modelo, cambie el
ng-options
atributo ay el Javascript para
Otro Plunker aquí considerando lo anterior.
fuente
Solo una respuesta de Srivathsa Harish Venkataramana mencionó
track by
cuál es realmente una solución para esto!Aquí hay un ejemplo junto con Plunker (enlace a continuación) de cómo usar
track by
en selectng-options
:Si
selectedCity
se define en el alcance angular y tiene unaid
propiedad con el mismo valor que cualquieraid
de loscity
de lacities
lista, se seleccionará automáticamente en la carga.Consulte la documentación de origen para obtener más detalles: https://code.angularjs.org/1.3.15/docs/api/ng/directive/select
fuente
Creo que, después de incluir 'track by', puede usarlo en ng-options para obtener lo que desea, como el siguiente
Esta forma de hacerlo es mejor porque cuando desee reemplazar la lista de cadenas con la lista de objetos, simplemente cambiará esto a
donde algo Aquí hay un objeto con el nombre y la identificación de las propiedades, por supuesto. Tenga en cuenta que 'as' no se usa de esta manera para expresar las opciones ng, porque solo establecerá el valor y no podrá cambiarlo cuando esté usando track by
fuente
El uso de respuesta aceptado
ng-init
, pero el documento dice que evite ng-init si es posible.También puede usar en
ng-repeat
lugar deng-options
para sus opciones. Conng-repeat
, puede usarng-selected
conng-repeat
propiedades especiales. es decir, $ index, $ impar, $ even para que esto funcione sin ningún tipo de codificación.$first
es una de las propiedades especiales de ng-repeat.---------------------- EDITAR ----------------
Aunque esto funciona, preferiría @ mik-t's responda cuando sepa qué valor seleccionar, https://stackoverflow.com/a/29564802/454252 , que utiliza
track-by
yng-options
sin usarng-init
ong-repeat
.Esta respuesta solo debe usarse cuando debe seleccionar el primer elemento sin saber qué valor elegir. por ejemplo, estoy usando esto para la finalización automática que requiere elegir el PRIMER elemento todo el tiempo.
fuente
ng-options
es más rápido y está más optimizado queng-repeat
.<select>
se asigna el modelo a través de laselect as
parte de la expresión de comprensión", "reduce el consumo de memoria al no crear un nuevo alcance para cada instancia repetida "," mayor velocidad de renderizado al crear las opciones endocumentFragment
lugar de individualmente "Mi solución a esto fue usar html para codificar mi opción predeterminada. Al igual que:
En HAML:
En HTML:
Quiero que mi opción predeterminada devuelva todos los valores de mi API, es por eso que tengo un valor en blanco. También disculpe mi haml. Sé que esto no es directamente una respuesta a la pregunta del OP, pero la gente lo encuentra en Google. Espero que esto ayude a alguien más.
fuente
Use el código a continuación para completar la opción seleccionada de su modelo.
fuente
Dependiendo de cuántas opciones tenga, puede colocar sus valores en una matriz y rellenar automáticamente sus opciones de esta manera
fuente
En mi caso, tuve que insertar un valor inicial solo para indicarle al usuario que seleccione una opción, por lo tanto, me gusta el siguiente código:
Cuando probé una opción con el valor! = De una cadena vacía (nula), la opción fue sustituida por angular, pero, cuando puse una opción como esa (con valor nulo), la selección aparece con esta opción.
Perdón por mi mal inglés y espero ayudar en algo con esto.
fuente
Usar
select
conngOptions
y establecer un valor predeterminado:Consulte la documentación de ngOptions para obtener más
ngOptions
ejemplos de uso.plnkr.co
Documentación oficial sobre el
SELECT
elementoHTMLcon enlace de datos angular.Enlace
select
a un valor que no sea de cadena mediantengModel
análisis / formateo:plnkr.co
Otro ejemplo:
jsfiddle
fuente
Esto funcionó para mí.
fuente
En mi caso, ya que el valor predeterminado varía de un caso a otro en el formulario. Agrego un atributo personalizado en la etiqueta de selección.
en las directivas creé un script que verifica el valor y cuando angular lo llena establece la opción con ese valor a seleccionado.
})
acabo de traducir esto de coffescript sobre la marcha, al menos la esencia es correcta, si no es que el agujero.
No es la forma más simple, pero hágalo cuando el valor varía
fuente
En respuesta a la respuesta de Ben Lesh , debería haber esta línea
en vez de
Es decir,
fuente
Simplemente use
ng-selected="true"
lo siguiente:fuente
Establecería el modelo en el controlador. Entonces, la selección tendrá ese valor por defecto. Ej: html:
Controlador angular (usando recursos):
fuente
Esto funciona para mi
fuente
ng-init
porque está configurando un ngModel.Si está utilizando
ng-options
para renderizar, desplegable queoption
tiene el mismo valor que ng-modal está seleccionado por defecto. Considere el ejemplo:Entonces, la opción que tiene el mismo valor de
list.key
yselectedItem
, está seleccionada por defecto.fuente
Necesitaba la opción predeterminada "Seleccione" para que no se pueda seleccionar. También necesitaba poder configurar condicionalmente una opción seleccionada por defecto.
Logré esto de la siguiente manera simplista: Código JS: // Voltee estos 2 para probar el valor predeterminado seleccionado o no predeterminado con el texto predeterminado "Please Select" //$scope.defaultOption = 0; $ scope.defaultOption = {clave: '3', valor: 'Opción 3'};
HTML:
Espero que esto ayude a alguien que tenga requisitos similares.
El "Por favor seleccione" se logró a través de la respuesta de Joffrey Outtier aquí .
fuente
Si tiene algo en lugar de solo iniciar la parte de fecha, puede usarlo
ng-init()
declarándolo en su controlador y usarlo en la parte superior de su HTML. Esta función funcionará como un constructor para su controlador, y puede iniciar sus variables allí.fuente
fuente
intente esto en su controlador angular ...
$ somethingHere = {name: 'Something Cool'};
Puede establecer un valor, pero está utilizando un tipo complejo y el angular buscará la clave / valor para establecer en su vista.
Y, si no funciona, intente esto: ng-options = "option.value as option.name para option en options track by option.name"
fuente
Creo que la forma más fácil es
fuente