Usando AngularJS si configuro un valor de cuadro de texto de entrada simple para algo como "bob" a continuación. El valor no se muestra si ng-model
se agrega el atributo.
<input type="text"
id="rootFolder"
ng-model="rootFolders"
disabled="disabled"
value="Bob"
size="40"/>
¿Alguien sabe de una solución simple para predeterminar esta entrada a algo y mantener el ng-model
? Intenté usar a ng-bind
con el valor predeterminado, pero parece que tampoco funciona.
javascript
html
angularjs
Hola Mundo
fuente
fuente
Vojta describió la "forma angular", pero si realmente necesita hacer que esto funcione, @urbanek recientemente publicó una solución alternativa usando ng-init:
https://groups.google.com/d/msg/angular/Hn3eztNHFXw/wk3HyOl9fhcJ
fuente
value="Bob"
parte en la etiqueta de entrada.Anular la directiva de entrada parece hacer el trabajo. Hice algunas modificaciones menores al código de Dan Hunsaker :
$parse().assign()
en campos sin atributos ngModel.assign()
orden de la función param.fuente
El camino angular
La forma angular correcta de hacer esto es escribir una aplicación de una sola página, AJAX en la plantilla de formulario, y luego llenarla dinámicamente desde el modelo. El modelo no se rellena desde el formulario de forma predeterminada porque el modelo es la única fuente de verdad. En su lugar, Angular irá en sentido contrario e intentará completar el formulario desde el modelo.
Sin embargo, si no tiene tiempo para comenzar de nuevo desde cero
Si tiene una aplicación escrita, esto podría implicar algunos cambios arquitectónicos bastante fuertes. Si está intentando usar Angular para mejorar un formulario existente, en lugar de construir una aplicación de página única desde cero, puede extraer el valor del formulario y almacenarlo en el alcance en el momento del enlace utilizando una directiva. Angular luego vinculará el valor en el alcance de nuevo al formulario y lo mantendrá sincronizado.
Usando una directiva
Puede usar una directiva relativamente simple para extraer el valor del formulario y cargarlo en el ámbito actual. Aquí he definido una directiva initFromForm.
Puedes ver que he definido un par de alternativas para obtener un nombre de modelo. Puede usar esta directiva junto con la directiva ngModel, o unirse a algo que no sea $ scope si lo prefiere.
Úselo así:
Tenga en cuenta que esto también funcionará con áreas de texto y menús desplegables seleccionados.
fuente
input="text"
. Si tiene unnumber
, arrojará Modelo no es del tiponumber
docs.angularjs.org/error/ngModel/numfmt?p0=333if (attrs.type === "number") val = parseInt(val);
Actualización: Mi respuesta original implicaba que el controlador contuviera código compatible con DOM, que rompe las convenciones angulares a favor del HTML. @dmackerman mencionó las directivas en un comentario sobre mi respuesta, y me perdí por completo hasta ahora. Con esa entrada, esta es la forma correcta de hacerlo sin romper las convenciones Angular o HTML:
También hay una forma de obtener ambos: tome el valor del elemento y úselo para actualizar el modelo en una directiva:
y entonces:
Por supuesto, puede modificar la directiva anterior para hacer más con el
value
atributo antes de establecer el modelo en su valor, incluido el uso$parse(attrs.value, scope)
para tratar elvalue
atributo como una expresión angular (aunque probablemente usaría un atributo [personalizado] diferente para eso, personalmente, entonces los atributos HTML estándar se tratan consistentemente como constantes).Además, hay una pregunta similar en Hacer que los datos estén disponibles para ng-model que también pueden ser de interés.
fuente
Si usa la directiva ngModel de AngularJs, recuerde que el valor del
value
atributo no se une al campo ngModel . Debe iniciarlo usted mismo y la mejor manera de hacerlo esfuente
Esta es una ligera modificación a las respuestas anteriores ...
No hay necesidad de $ parse
fuente
Hola, puedes probar los siguientes métodos con la inicialización del modelo.
Aquí puede inicializar ng-model de textbox de dos maneras
- Con el uso de ng-init
- Con el uso de $ scope en js
fuente
El problema es que debe establecer el modelo ng en el elemento principal donde desea establecer el valor / valor ng. Como lo menciona Angular:
Por ejemplo: este es un código ejecutado:
Nota: En este caso anterior, ya tenía la respuesta JSON al modelo ng y el valor, solo estoy agregando otra propiedad al objeto JS como "MarketPeers". Por lo tanto, el modelo y el valor pueden depender de acuerdo con la necesidad, pero creo que este proceso ayudará, tener ambos ng-model y value pero no tenerlos en el mismo elemento.
fuente
Tuve un problema similar. No pude usar
value="something"
para mostrar y editar. Tuve que usar el siguiente comando dentro de mi<input>
junto con el modelo ng que se declaraba.Donde tengo la lista de datos en el objeto
userDataToPass
y el elemento que necesito mostrar y editar espinCode
.Por lo mismo, me referí a este video de YouTube
fuente