사용자가 일종의 "저장"또는 "제출"단추를 클릭하는 기간 동안 양식 컨트롤을 비활성화 (또는 최소한 사용자 상호 작용에 사용할 수 없도록 설정)하려는 경우 최상의 (올바른) 접근 방식이 무엇인지에 대한 딜레마가 있습니다. 그리고 유선을 통해 이동하는 데이터. 나는 JQuery를 사용하고 싶지 않다 (악한 !!!) 모든 요소를 배열 (클래스 또는 속성 마커로)으로 쿼리하고 싶지 않다.
cm-form-control
"데이터 전송 됨"및 "데이터 처리됨"의 두 가지 알림을 구독 할 사용자 지정 지시문으로 모든 요소를 표시합니다 . 그런 다음 사용자 지정 코드는 두 번째 알림을 푸시하거나 약속을 해결합니다.- 사용
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>
및 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);
};
});
양식에서 데이터를 보내기 위해 어떤 서비스를 사용하고 있습니까? $ http 또는 $ resource?
—
François Romain
내가 뛰어난 것을 다룰 필요가 없기 때문에 실제로 $ http입니다.
—
YoMan78 2014
비활성화 된 필드 셋은 IE에서 작동하지 않습니다. 즉, 솔루션이 아닙니다. 부트 스트랩 모달을 사용하고 배경을 정적으로 설정했습니다.
—
im1dermike 2015-08-12
작성 시점에 flexbox 컨테이너로 사용할 수없는 버그 가
—
George Mauer
fieldset
있습니다