Pourquoi les ensembles angulaires ne sont pas définis pour les champs vides du modèle ng
J'ai simple application crud Angulaire (1.2) et Laravel (4.2). À de simples opérations crud-je utiliser efficace Éloquent méthode:
$product->fill(Input::all());
qui prend tous les champs de la demande de la charge utile, mais est-il un problème quand j'ai besoin de faire de mise à jour du modèle avec des champs vides.
Dans l'action edit j'ai un formulaire qui est rempli avec une réponse de $ressource méthode get de mon service:
adminModule.factory 'Product', ($resource) ->
$resource '/admin/products/:id', { id: '@id' }, {
query: { method: 'GET', isArray: false }
update: { method: 'PUT' }
}
un contrôleur:
adminModule.controller 'ProductFormEditController', ($scope, Product, $stateParams) ->
$scope.formData = Product.get({id: $stateParams.id})
et html:
<input type="text" data-ng-model="formData.name" name="name" class="form-control" id="name"
placeholder="Nazwa" data-server-error required>
Si je effacer cette valeur de champ et de ne soumettre la valeur de $champ d'application.formData est indéfinie et il n'est pas inclus dans la requête PUT, de sorte que le laravel modèle de méthode de remplissage ne voyez pas le champ de toute façon et ne définit la valeur vide pour la validation, mais prend la valeur d'origine du modèle.
Le problème est: Comment puis-je envoyer une chaîne vide à partir de ngModel au lieu de indéfinis?
p.s. Si le type d'entrée est textarea $ressource envoyer à vide "" string :-/, je suis confus...
source d'informationauteur Karol Fiturski
Vous devez vous connecter pour publier un commentaire.
Quand vous avez le "nécessaire" directive sur l'entrée, une valeur vide ne sera jamais ensemble (donc il ne sera pas défini).
Voir le code source ("requiredDirective" dans le fichier input.js) où aucune valeur n'est récupéré à conserver dans le modèle, lorsque l'entrée est vide:
À mon humble avis c'est un peu étrange de cas d'utilisation, de toute façon, Vous en voulez la validation côté client, mais encore envie de soumettre des valeurs non valides pour le serveur, non?
Je suppose que vous pouvez écrire votre propre validation ("mon-requis") pour ce faire.
Vous pouvez également copier les valeurs par défaut avant la publication des données au serveur, par exemple avec lodash (ou un trait de soulignement):
_.les valeurs par défaut(formData, { nom: ""});
Vous pouvez configurer angulaire à définir votre modèle, même lorsque la valeur n'est pas valide avec la propriété
allowInvalid
dengModelOptions
.De Référence de l'API: https://docs.angularjs.org/api/ng/directive/ngModelOptions
Exemple: