जब मैं प्रपत्र नियंत्रण को अक्षम करना चाहता हूं (या कम से कम उन्हें उपयोगकर्ता संपर्क के लिए अनुपलब्ध कर देना चाहता हूं) तो मुझे इस बात की दुविधा है कि जब उपयोगकर्ता "सेव" या "सबमिट" बटन पर क्लिक करता है और तार पर यात्रा करने वाले डेटा। मैं JQuery का उपयोग नहीं करना चाहता (जो कि बुराई है !!!) और सरणी के रूप में सभी तत्वों को क्वेरी करें (वर्ग या विशेषता मार्कर द्वारा) मेरे द्वारा अब तक किए गए विचार हैं:
cm-form-control
कस्टम निर्देशों के साथ सभी तत्वों को चिह्नित करें जो 2 सूचनाओं के लिए सदस्यता लेंगे: "डेटा-भेजा गया" और "डेटा-संसाधित"। तब कस्टम कोड दूसरी अधिसूचना को आगे बढ़ाने या एक वादे को हल करने के लिए जिम्मेदार है।- का उपयोग करें
promiseTracker
(unfortunatelly!) की तरह अत्यंत बेवकूफ कोड का उत्पादन करने के लिए लागू होता हैng-show="loadingTracker.active()"
। जाहिर है सभी तत्वों में नहीं हैng-disabled
और मैंng-hide/show
"डांसिंग" बटन से बचने के लिए उपयोगकर्ता नहीं करना चाहता । - एक गोली काटें और अभी भी JQuery का उपयोग करें
क्या किसी के पास एक बेहतर विचार है? अग्रिम में धन्यवाद!
अद्यतन: फ़ील्ड विचार कार्य करता है। यहाँ उन लोगों के लिए एक सरल पहेली है जो अभी भी ऐसा ही करना चाहते हैं 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>
और जेएस:
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);
};
});