Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以/应该对同一元素应用多个自定义指令?_Javascript_Angularjs_Forms_Validation - Fatal编程技术网

Javascript 是否可以/应该对同一元素应用多个自定义指令?

Javascript 是否可以/应该对同一元素应用多个自定义指令?,javascript,angularjs,forms,validation,Javascript,Angularjs,Forms,Validation,在我的应用程序中,我有一个自定义指令,由其他人编写,用于验证和格式化几个不同的表单字段,例如姓名、地址、电话、信用卡号、DOB等。如果用户输入无效数据,ng invalid将添加到该特定表单元素的CLASS属性中。表单的提交绑定了一个函数,该函数在允许表单提交之前检查所有字段是否包含有效数据。差不多 app.directive('validateForms', function () { var form = angular.element(elem); scope

在我的应用程序中,我有一个自定义指令,由其他人编写,用于验证和格式化几个不同的表单字段,例如姓名、地址、电话、信用卡号、DOB等。如果用户输入无效数据,ng invalid将添加到该特定表单元素的CLASS属性中。表单的提交绑定了一个函数,该函数在允许表单提交之前检查所有字段是否包含有效数据。差不多

  app.directive('validateForms', function () {

      var form = angular.element(elem);
      scope.isSubmitted = false;

      form.bind('submit', function() {
          scope.isSubmitted = true;
          if(form.hasClass('ng-invalid')) return false;
       });
  });
此指令将应用于视图中的元素

<form name="request-info" id="request-info" validate-forms>
<form name="request-info" id="request-info" validate-forms show-err-msgs>
此指令将应用于视图中的元素

<form name="request-info" id="request-info" validate-forms>
<form name="request-info" id="request-info" validate-forms show-err-msgs>
预期的行为是,单击submit按钮将更改isSubmitted的值,并立即使用其值触发警报。可悲的是,根本没有警报。。。这让我相信以下一个或两个:

这两条指令在不同的范围内,这就是为什么一条指令中的更改在另一条指令中检测不到的原因

我完全错了,不能这样做

有人能告诉我哪里出了问题吗?

啊,太蠢了!!我将第1条指令作为验证模块的一部分:

角度。模块“验证器”。指令

第二条指令是我主要模块的一部分

角度。模块“buyApp”。指令


当这两个指令都附加到Validate模块时,我的原始帖子中的代码就起作用了。我仍然想知道这是否是一种谨慎的表单验证和显示错误消息的方法。有人吗?

可能是范围。$apply?您还缺少0超时延迟},0;。您可能希望在指令与服务之间进行通信—服务基本上是指针概念—两者都将引用相同的内容,当内容发生更改时,每个人都会收到通知。