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?
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 .
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>