Estou usando JS angular e preciso definir uma opção selecionada de um controle de lista suspensa usando JS angular. Perdoe-me se isso é ridículo, mas eu sou novo no Angular JS
Aqui está o controle da lista suspensa do meu html
<select ng-required="item.id==8 && item.quantity > 0" name="posterVariants"
ng-show="item.id==8" ng-model="item.selectedVariant"
ng-change="calculateServicesSubTotal(item)"
ng-options="v.name for v in variants | filter:{type:2}">
</select>
Depois de preenchido, recebo
<select ng-options="v.name for v in variants | filter:{type:2}" ng-change="calculateServicesSubTotal(item)"
ng-model="item.selectedVariant" ng-show="item.id==8" name="posterVariants"
ng-required="item.id==8 && item.quantity > 0" class="ng-pristine ng-valid ng-valid-required">
<option value="?" selected="selected"></option>
<option value="0">set of 6 traits</option>
<option value="1">5 complete sets</option>
</select>
Como posso definir o controle para value="0"
ser selecionado?
<option value="0" ng-selected="true">set of 6 traits</option>
Respostas:
Espero entender sua pergunta, mas a
ng-model
diretiva cria uma ligação bidirecional entre o item selecionado no controle e o valor deitem.selectedVariant
. Isso significa que alterar oitem.selectedVariant
JavaScript ou alterar o valor no controle atualiza o outro. Seitem.selectedVariant
tiver um valor igual a0
, esse item deve ser selecionado.Se
variants
é uma matriz de objetos,item.selectedVariant
deve ser definido como um desses objetos. Não sei quais informações você tem no seu escopo, mas aqui está um exemplo:JS:
HTML:
Isso deixaria o item "b" a ser selecionado.
fonte
$scope
variável Então, supondo que você esteja em um único escopo, em seu controlador, você poderia dizer$scope.item.selectedVariant = 0
, para definir o valor selecionado padrão. Você também pode definir a variável diretamente no controle, em HTML, usando a diretiva ng-init , mas isso fica confuso na minha opinião!variants
está no seu escopo? Você precisaria definiritem.selectedVariant
exatamente para um item devariants
.Não sei se isso vai ajudar alguém ou não, mas como eu estava enfrentando o mesmo problema, pensei em compartilhar como obtive a solução.
Você pode usar a faixa por atributo em seu
ng-options
.Suponha que você tenha:
Você pode mencionar o seu
ng-options
como:Espero que isso ajude alguém no futuro.
fonte
ngModel
corretamente, mas não funcionou até eu adicionar otrack by
! Obrigado!Se você atribuir o valor 0 a
item.selectedVariant
ele, ele deve ser selecionado automaticamente. Confira a amostra em http://docs.angularjs.org/api/ng.directive:select, que seleciona a cor vermelha por padrão simplesmente atribuindo$scope.color='red'
.fonte
vejo aqui já escrevi boas respostas, mas em algum momento escrever o mesmo de outra forma pode ser útil
fonte
Maneira simples
Se você tiver um Usuário como resposta ou um Array / JSON que você definiu, primeiro você precisa definir o valor selecionado no controlador e, em seguida, colocar o mesmo nome do modelo em html. Este exemplo que escrevi para explicar da maneira mais fácil.
Exemplo simples
Inside Controller:
O seu HTML
Exemplo complexo
Inside Controller:
O seu HTML
fonte
Pode ser útil. Dose de ligações nem sempre funciona.
Por exemplo. Você preenche o modelo de origem da lista de opções do serviço de descanso. O valor selecionado era conhecido antes da lista de preenchimento e foi definido. Após executar a solicitação de descanso com a opção $ http list, faça-se. Mas a opção selecionada não está definida. Por razões desconhecidas, o AngularJS na execução shadow $ digest não vincula a seleção selecionada como deve ser. Eu tenho que usar JQuery para definir selecionado. É importante! Angular na sombra adiciona prefixo ao valor de attr "value" gerado por optinos ng-repeat. Para int é "number:".
fonte
Tente o seguinte:
Arquivo JS
Arquivo HTML
fonte
Este é o código que eu usei para o valor selecionado definido
tente isso em uma estrutura angular
fonte
JS:
fonte