web-dev-qa-db-fra.com

Comment définir la valeur initiale de ng-model sur une chaîne vide dans angularjs?

Je veux pouvoir définir ma valeur initiale pour un attribut de mon modèle en tant que tel

<input type="text" ng-model="selectedModel.title" name="title" value="" >

Comme indiqué ci-dessus, je veux que la valeur de l'attribut soit une chaîne vide comme pour instancier initialement le champ de texte d'entrée avec une chaîne vide.

Cependant, actuellement le ng-model="selectedModel.title" remplace le value="".

Comment puis-je surmonter cela?

15
stcho

Définir les valeurs initiales dans le contrôleur

Vous devez le faire dans votre contrôleur:

angular.module('MyModule').controller(
  'myController',
  function ($scope, MyService) {
    $scope.selectedModel = { title: '' };
  }

  // if you're using a service
  MyService.getModel().then(function (model) {
    $scope.selectedModel = model;
    // selected model doesn't have a title set, so give it a blank string as default
    if (angular.isUndefined($scope.selectedModel)) {
      $scope.selectedModel.title = '';
    }
  });
);

Vous pouvez en savoir plus sur la définition de l'état initial de $ scope dans votre contrôleur ici .

Autre option: ng-init

Les documents officiels AngularJS pour ng-init suggèrent qu'il n'y a qu'une seule utilisation pour ng-init, "pour aliaser les propriétés spéciales de ngRepeat". Dans votre cas, il vaut mieux utiliser le contrôleur pour initialiser la valeur.

Vous pouvez utiliser ng-init :

<input type="text"
       name="brand"
       ng-model="selectedModel.title"
       ng-init="selectedModel.title=''">
</input>
17
Rudolf Olah