相关疑难解决方法(0)

AngularJS:禁用提交和服务器响应之间的所有表单控件

如果我想在用户点击"保存"或"提交"按钮排序的一段时间内禁用表单控件(或者至少使它们不可用于用户交互),那么我遇到了什么是最好(和正确)方法的困境和通过电线传输的数据.我不想使用JQuery(这是邪恶的!!!)并查询所有元素作为数组(通过类或属性标记)我到目前为止的想法是:

  • 使用cm-form-control自定义指令标记所有元素,该指令将订阅2个通知:"数据发送"和"数据处理".然后自定义代码负责推送第二个通知或解决承诺.
  • 使用promiseTracker它(不幸!)强制生成非常愚蠢的代码,如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>
Run Code Online (Sandbox Code Playgroud)

和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);
    };
});
Run Code Online (Sandbox Code Playgroud)

javascript forms submit angularjs

121
推荐指数
1
解决办法
9万
查看次数

标签 统计

angularjs ×1

forms ×1

javascript ×1

submit ×1