web-dev-qa-db-fra.com

Changer la valeur de l'espace réservé d'entrée via le modèle?

J'essaie de changer la valeur de l'espace réservé d'entrée à partir d'un contrôleur, mais je ne comprends pas très bien comment.

input(type='text', ng-model='inputText', side='30', placeholder='enter username')

Existe-t-il un moyen de modifier les attributs d'élément d'un modèle?

61
Jonah Katz

Vous pouvez vous lier à une variable dans le contrôleur:

<input type="text" ng-model="inputText" placeholder="{{somePlaceholder}}" />

Dans le contrôleur:

$scope.somePlaceholder = 'abc';
120
Wagner Francisco

La réponse acceptée a toujours généré une erreur Javascript dans IE pour moi (pour Angular 1.2 au moins). C'est un bogue, mais la solution de contournement consiste à utiliser ngAttr en détail sur https://docs.angularjs.org/guide/interpolation

<input type="text" ng-model="inputText" ng-attr-placeholder="{{somePlaceholder}}" />

Problème: https://github.com/angular/angular.js/issues/5025

21
ysub

Comme AngularJS n’a pas de directives DOM manipulées comme jQuery, une méthode appropriée pour modifier les attributs d’un élément consiste à utiliser directive. Grâce à la fonction de liaison d’une directive, vous avez accès à la fois à l’élément et à ses attributs.

En encapsulant votre entrée entière dans une directive, vous pouvez toujours introduire les méthodes de ng-model via la propriété controller.

Cette méthode aidera à découpler la logique de ngmodel avec un espace réservé du contrôleur. S'il n'y a pas de logique entre eux, vous pouvez certainement y aller comme l'a dit Wagner Francisco.

7
Z.T. Yang

Comme disait Wagner Francisco, (dans JADE)

input(type="text", ng-model="someModel", placeholder="{{someScopeVariable}}")`

Et dans votre contrôleur:

$scope.someScopeVariable = 'somevalue'
4
amit_kenny