Usando AngularJS se eu definir um valor simples da caixa de texto de entrada para algo como "bob" abaixo. O valor não será exibido se o ng-model
atributo for adicionado.
<input type="text"
id="rootFolder"
ng-model="rootFolders"
disabled="disabled"
value="Bob"
size="40"/>
Alguém sabe de uma solução simples para usar como padrão essa entrada e manter o ng-model
? Tentei usar a ng-bind
com o valor padrão, mas isso também parece não funcionar.
javascript
html
angularjs
Olá Mundo
fonte
fonte
Vojta descreveu o "caminho angular", mas se você realmente precisar fazer isso funcionar, o @urbanek postou recentemente uma solução alternativa usando o ng-init:
https://groups.google.com/d/msg/angular/Hn3eztNHFXw/wk3HyOl9fhcJ
fonte
value="Bob"
participar da tag de entrada.A substituição da diretiva de entrada parece fazer o trabalho. Fiz algumas pequenas alterações no código de Dan Hunsaker :
$parse().assign()
nos campos sem os atributos ngModel.assign()
ordem dos parâmetros da função.fonte
O caminho angular
A maneira angular correta de fazer isso é escrever um aplicativo de página única, o AJAX no modelo de formulário e preenchê-lo dinamicamente a partir do modelo. O modelo não é preenchido do formulário por padrão porque o modelo é a única fonte de verdade. Em vez disso, o Angular seguirá o outro caminho e tentará preencher o formulário a partir do modelo.
Se, no entanto, você não tiver tempo para começar do zero
Se você tiver um aplicativo escrito, isso poderá envolver algumas mudanças arquiteturais bastante pesadas. Se você estiver tentando usar o Angular para aprimorar um formulário existente, em vez de construir um aplicativo de página única inteiro do zero, poderá extrair o valor do formulário e armazená-lo no escopo no momento do link usando uma diretiva. O Angular vinculará o valor no escopo ao formulário e o manterá sincronizado.
Usando uma diretiva
Você pode usar uma diretiva relativamente simples para extrair o valor do formulário e carregá-lo no escopo atual. Aqui eu defini uma diretiva initFromForm.
Você pode ver que eu defini algumas alternativas para obter um nome de modelo. Você pode usar esta diretiva em conjunto com a diretiva ngModel ou vincular a algo diferente de $ scope, se preferir.
Use-o assim:
Observe que isso também funcionará com áreas de texto e selecione menus suspensos.
fonte
input="text"
. Se você tem umnumber
que vai jogar de modelo não é do tiponumber
docs.angularjs.org/error/ngModel/numfmt?p0=333if (attrs.type === "number") val = parseInt(val);
Atualização: minha resposta original envolvia que o controlador contivesse código compatível com DOM, o que quebra as convenções angulares em favor do HTML. @dmackerman mencionou diretivas em um comentário sobre a minha resposta, e eu perdi completamente isso até agora. Com essa entrada, eis a maneira correta de fazer isso sem violar as convenções Angular ou HTML:
Também há uma maneira de obter os dois - pegue o valor do elemento e use-o para atualizar o modelo em uma diretiva:
e depois:
É claro que você pode modificar a diretiva acima para fazer mais com o
value
atributo antes de definir o modelo com seu valor, inclusive usando$parse(attrs.value, scope)
para tratar ovalue
atributo como uma expressão Angular (embora eu provavelmente usaria um atributo [personalizado] diferente para isso, pessoalmente, para que os atributos HTML padrão sejam tratados consistentemente como constantes).Além disso, há uma pergunta semelhante em Disponibilizar dados modelados em disponíveis para o modelo ng, que também pode ser interessante.
fonte
Se você usar a diretiva AngularJs ngModel, lembre-se de que o valor do
value
atributo não se liga ao campo ngModel . É necessário iniciá -lo sozinho e a melhor maneira de fazê-lo éfonte
Esta é uma ligeira modificação nas respostas anteriores ...
Não há necessidade de $ parse
fonte
Oi, você pode tentar os métodos abaixo com a inicialização do modelo.
Aqui você pode inicializar o modelo ng da caixa de texto em dois sentidos
- Com o uso de ng-init
- Com o uso de $ scope em js
fonte
O problema é que você precisa definir o ng-model como o elemento pai para onde deseja definir o ng-value / value. Conforme mencionado pela Angular:
Por exemplo: este é um código executado:
Nota: Neste caso acima, eu já tive a resposta JSON para o ng-model e o valor, estou apenas adicionando outra propriedade ao objeto JS como "MarketPeers". Portanto, o modelo e o valor podem depender de acordo com a necessidade, mas acho que esse processo ajudará a ter o modelo ng e o valor, mas não os tendo no mesmo elemento.
fonte
Eu tive um problema semelhante. Não pude usar
value="something"
para exibir e editar. Eu tive que usar o comando abaixo dentro do meu<input>
junto com o modelo sendo declarado.Onde tenho a lista de dados no objeto
userDataToPass
e o item que preciso exibir e editar épinCode
.Para o mesmo, me referi a este vídeo do YouTube
fonte