Pesquisei no Google e não consigo encontrar nada sobre isso.
Eu tenho esse código.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
></select>
Com alguns dados como este
options = [{
name: 'Something Cool',
value: 'something-cool-value'
}, {
name: 'Something Else',
value: 'something-else-value'
}];
E a saída é algo como isto.
<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>
Como é possível definir a primeira opção nos dados como o valor padrão, para que você obtenha um 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
fonte
fonte
a **single** hard-coded <option> element ... can be nested into the <select> element.
As opções ainda não podiam fazer parte da marcação.Respostas:
Você pode simplesmente usar o ng-init assim
fonte
Se você quiser garantir que seu
$scope.somethingHere
valor não seja sobrescrito quando a sua exibição for inicializada, convém coalescer (somethingHere = somethingHere || options[0].value
) o valor no ng-init da seguinte maneira:fonte
options
estar vazio? Como no caso deoptions
dados serem provenientes de fonte externa.ng-init="somethingHere= somethingHere || 'Select one' "
Eu tentei assim. mas não funcionou. o que está errado no meu códigoTente o seguinte:
HTML
Javascript
Plunker aqui .
Se você realmente deseja definir o valor que será vinculado ao modelo, altere o
ng-options
atributo parae o Javascript para
Outro Plunker aqui considerando o exposto acima.
fonte
Apenas uma resposta de Srivathsa Harish Venkataramana mencionou
track by
que é realmente uma solução para isso!Aqui está um exemplo junto com o Plunker (link abaixo) de como usar
track by
no selectng-options
:Se
selectedCity
for definido no escopo angular e tiverid
propriedade com o mesmo valor que qualquerid
outrocity
nacities
lista, será selecionado automaticamente no carregamento.Consulte a documentação de origem para obter mais detalhes: https://code.angularjs.org/1.3.15/docs/api/ng/directive/select
fonte
Acho que, após a inclusão de 'rastrear por', você pode usá-lo em ng-options para obter o que deseja, como o seguinte
Essa maneira de fazê-lo é melhor porque quando você deseja substituir a lista de cadeias de caracteres por lista de objetos, altere isso para
where somethingHere é um objeto com o nome e o ID das propriedades, é claro. Observe que 'as' não é usado dessa maneira para expressar as opções ng, porque ele definirá apenas o valor e você não poderá alterá-lo quando estiver usando track by
fonte
A resposta aceita é usar
ng-init
, mas o documento diz para evitar ng-init, se possível.Você também pode usar em
ng-repeat
vez deng-options
para suas opções. Comng-repeat
, você pode usarng-selected
comng-repeat
propriedades especiais. ou seja, $ index, $ odd, $ even para fazer isso funcionar sem nenhuma codificação.$first
é uma das propriedades especiais ng-repeat.---------------------- EDIT ----------------
Embora isso funcione, eu preferiria @ mik-t's responda quando souber qual valor selecionar, https://stackoverflow.com/a/29564802/454252 , que usa
track-by
eng-options
sem usarng-init
oung-repeat
.Essa resposta deve ser usada apenas quando você deve selecionar o primeiro item sem saber qual valor escolher. por exemplo, estou usando isso para preenchimento automático, o que exige a escolha do PRIMEIRO item o tempo todo.
fonte
ng-options
é mais rápido e otimizado do queng-repeat
.<select>
modelo do é atribuído através daselect as
parte da expressão de compreensão”, “reduz o consumo de memória ao não criar um novo escopo para cada instância repetido”,‘aumentou tornar velocidade, criando as opções de umadocumentFragment
vez de individualmente’Minha solução para isso foi usar html para codificar minha opção padrão. Igual a:
No HAML:
Em HTML:
Quero que minha opção padrão retorne todos os valores da minha API, é por isso que tenho um valor em branco. Também desculpe meu haml. Sei que isso não é diretamente uma resposta à pergunta do OP, mas as pessoas encontram isso no Google. Espero que isso ajude outra pessoa.
fonte
Use o código abaixo para preencher a opção selecionada do seu modelo.
fonte
Dependendo de quantas opções você tem, você pode colocar seus valores em uma matriz e preencher automaticamente suas opções como esta
fonte
No meu caso, eu precisava inserir um valor inicial apenas para informar ao usuário para selecionar uma opção; portanto, gosto do código abaixo:
Quando tentei uma opção com o valor! = De uma sequência vazia (nula), a opção foi substituída por angular, mas, ao colocar uma opção como essa (com valor nulo), o select aparece com essa opção.
Desculpe pelo meu inglês ruim e espero ajudar em algo com isso.
fonte
Usando
select
comngOptions
e definindo um valor padrão:Veja a documentação do ngOptions para mais
ngOptions
exemplos de uso.plnkr.co
Documentação oficial sobre o
SELECT
elementoHTMLcom ligação de dados angular.Vinculação
select
a um valor não-string viangModel
análise / formatação:plnkr.co
Outro exemplo:
jsfiddle
fonte
Isso funcionou para mim.
fonte
No meu caso, já que o padrão varia de caso para caso no formulário. Eu adiciono um atributo personalizado na tag select.
nas diretivas, criei um script que verifica o valor e, quando preenchido pelo angular, define a opção com esse valor para selecionado.
})
acabei de traduzir isso de coffescript on the fly pelo menos o jist está correto, se não o buraco.
Não é a maneira mais simples, mas faça-o quando o valor variar
fonte
Em resposta à resposta de Ben Lesh , deve haver esta linha
ao invés de
Isso é,
fonte
Basta usar
ng-selected="true"
o seguinte:fonte
Eu definiria o modelo no controlador. Em seguida, a seleção assumirá o valor padrão. Por exemplo: html:
Controlador angular (usando recurso):
fonte
Isso funciona para mim
fonte
ng-init
porque você está configurando um ngModel.Se você estiver usando
ng-options
para renderizar, o menu suspensooption
com o mesmo valor de ng-modal é o padrão selecionado. Considere o exemplo:Portanto, a opção com o mesmo valor de
list.key
eselectedItem
, é o padrão selecionado.fonte
Eu precisava que o padrão "Por favor, selecione" não fosse selecionável. Eu também precisava ser capaz de definir condicionalmente uma opção selecionada padrão.
Consegui isso da seguinte maneira simplista: Código JS: // Vire esses 2 para testar o padrão selecionado ou nenhum padrão com o texto “Por favor, selecione” //$scope.defaultOption = 0; $ scope.defaultOption = {chave: '3', valor: 'Opção 3'};
HTML:
Espero que isso ajude alguém que tenha requisitos semelhantes.
O "Please Select" foi realizado através da resposta de Joffrey Outtier aqui .
fonte
Se você tem alguma coisa em vez de apenas iniciar a parte da data, pode usar
ng-init()
la declarando-a no seu controlador e na parte superior do seu HTML. Esta função funcionará como um construtor para o seu controlador e você poderá iniciar suas variáveis lá.fonte
fonte
tente isso no seu controlador angular ...
$ somethingHere = {name: 'Algo legal'};
Você pode definir um valor, mas está usando um tipo complexo e o angular procurará a chave / valor para definir em sua exibição.
E, se não funcionar, tente o seguinte: ng-options = "option.value as option.name para a opção nas opções track by option.name"
fonte
Eu acho que a maneira mais fácil é
fonte