J'ai un dilemme sur la meilleure approche (et la bonne) si je veux désactiver les contrôles de formulaire (ou au moins les rendre indisponibles pour l'interaction de l'utilisateur) pendant une période pendant laquelle l'utilisateur clique sur le bouton "Enregistrer" ou "Soumettre" et les données voyageant sur le fil. Je ne veux pas utiliser JQuery (ce qui est mal !!!) et interroger tous les éléments sous forme de tableau (par classe ou marqueur d'attribut) Les idées que j'avais jusqu'à présent sont:
- Marquez tous les éléments avec
cm-form-control
une directive personnalisée qui s'abonnera à 2 notifications: "données envoyées" et "données traitées". Ensuite, le code personnalisé est chargé d'envoyer une deuxième notification ou de résoudre une promesse. - Utilisez
promiseTracker
cela (malheureusement!) Pour produire du code extrêmement stupide commeng-show="loadingTracker.active()"
. Évidemment, tous les éléments n'ont pasng-disabled
et je ne veux pas que l'utilisateurng-hide/show
évite les boutons de "danse". - Mordez une balle et utilisez toujours JQuery
Quelqu'un a-t-il une meilleure idée? Merci d'avance!
MISE À JOUR: L'idée de fieldset fonctionne. Voici un simple violon pour ceux qui veulent toujours faire de même http://jsfiddle.net/YoMan78/pnQFQ/13/
HTML:
<div ng-app="myApp">
<ng-form ng-controller="myCtrl">
Saving: {{isSaving}}
<fieldset ng-disabled="isSaving">
<input type="text" ng-model="btnVal"/>
<input type="button" ng-model="btnVal" value="{{btnVal}}"/>
<button ng-click="save()">Save Me Maybe</button>
</fieldset>
</ng-form>
</div>
et JS:
var angModule = angular.module("myApp", []);
angModule.controller("myCtrl", function ($scope, $filter, $window, $timeout) {
$scope.isSaving = undefined;
$scope.btnVal = 'Yes';
$scope.save = function()
{
$scope.isSaving = true;
$timeout( function()
{
$scope.isSaving = false;
alert( 'done');
}, 10000);
};
});
fieldset
ne peut pas être utilisé comme conteneur flexbox