Kullanıcının "Kaydet" veya "Gönder" düğmesini tıkladığı bir süre boyunca form kontrollerini devre dışı bırakmak (veya en azından bunları kullanıcı etkileşimi için kullanılamaz hale getirmek) istersem en iyi (ve doğru) yaklaşımın ne olduğu konusunda ikilem yaşıyorum ve kablo üzerinden seyahat eden veriler. JQuery'yi (kötü olan !!!) kullanmak ve tüm öğeleri dizi olarak sorgulamak (sınıfa veya özellik işaretleyicisine göre) Şimdiye kadar sahip olduğum fikirler:
cm-form-control
2 bildirime abone olacak tüm öğeleri özel yönergeyle işaretleyin: "veri gönderildi" ve "veri işlendi". Daha sonra, ikinci bildirimi göndermek veya bir sözü çözmek için özel kod sorumludur.promiseTracker
Bunu (ne yazık ki!) Gibi son derece aptal kodlar üretmek için kullanınng-show="loadingTracker.active()"
. Açıkçası tüm öğelerde yokng-disabled
ve kullanıcınınng-hide/show
"dans eden" düğmelerden kaçınmasını istemiyorum .- Bir mermi ısır ve yine de JQuery kullan
Daha iyi bir fikri olan var mı? Şimdiden teşekkürler!
GÜNCELLENDİ: Alan kümesi fikri İŞE ÇALIŞIYOR. İşte hala aynı şeyi yapmak isteyenler için basit bir keman. 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>
ve 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
bir FlexBox kap olarak kullanılamaz