当前位置: 首页 > 面试题库 >

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

戈睿识
2023-03-14
问题内容

如果我想在用户单击“保存”或“提交”按钮之类的一段时间内禁用表单控件(或至少使它们无法与用户交互),则对最好(正确)的方法有什么困惑?和数据通过网络传输。我不想使用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>

和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中, 并使用 ngDisabled 指令,如下所示:

<fieldset ng-disabled="isSaving"> ... inputs ...</fieldset>

它将自动禁用字段集中的所有输入。

然后在控制器中将其设置$scope.isSavingtruehttp调用之前和false之后。



 类似资料:
  • 问题内容: 如果文档中包含此内容,我会提前道歉,但我似乎找不到。 我有一个非常简单的表单,它使用多个按钮,就像我使用Twitter引导程序一样。问题是,单击表单中的任何按钮似乎都会触发角度的提交事件:在我的表单中,有几个输入字段使用“ require”属性,因此单击任何按钮都会打开一个对话框,指出该字段为需要。一切都很好,除了我只希望在用户单击实际的提交按钮时进行验证。 我尝试将ng-submit

  • 问题内容: 我正在学习AngularJs的学习过程,发现几乎没有任何示例可用于现实世界。 我试图对如何使用最标准的组件提交表单并将其传递给PHP文件有一个清晰的了解。 我的小提琴。 有人在提交简单,无污染的表单方面有什么好的例子吗,这些表单会对我以及其他许多Angularjs初学者有所帮助。 当我说一个干净的表格时,我指的是这样的东西。 我的ng-app代码… 我猜我接下来要问的三个问题是… 我的

  • 本文向大家介绍angularJS提交表单(form),包括了angularJS提交表单(form)的使用技巧和注意事项,需要的朋友参考一下 代码很简单,就不多废话了,直接奉上代码: 这里给大家分享的是最基础的angularJS表单验证,希望大家能够喜欢。

  • 问题内容: 当使用AngularJS服务尝试在两个控制器之间传递数据时,我的第二个控制器在尝试从该服务访问数据时始终会收到未定义的信息。我猜这是因为第一个服务执行的是$ window.location.href,并且我认为这正在清除服务中的数据?我是否可以将URL更改为新位置,并将数据保留在第二个控制器的服务中?当我运行下面的代码时,第二个控制器中的警报始终未定义。 app.js(定义服务的位置)

  • 问题内容: 单击后,我编写了以下代码以禁用网站上的提交按钮: 不幸的是,它没有发送表格。我怎样才能解决这个问题? 编辑 我想绑定提交,而不是表格:) 问题答案: 做到: 发生的事情是您实际上在完全触发该提交事件之前禁用了该按钮。 您可能还应该考虑使用ID或CLASS来命名元素,因此不要在页面上选择所有提交类型的输入。 (请注意,我使用,因此该表单在示例中并未实际提交;请在使用时将其保留。)

  • 我有一个正在写的剧本,需要一些帮助。 首先,我的脚本应该如何工作。 脚本:用户填写谷歌表单并点击提交。提交后,我的脚本运行并从google工作表中读取我在工作表中操作的一系列数据单元。然后将数据单元格格式化为字符串,并在表单的确认消息中提示。 现在问题来了。 问题:当我提交我对表格的回复时,从表格到表格的一切都很好。当我手动运行代码时,代码工作正常。当我提交表单响应时,事件历史记录会显示触发器并说