Javascript 如何实现多个按钮的角度验证

Javascript 如何实现多个按钮的角度验证,javascript,angularjs,validation,angularjs-directive,Javascript,Angularjs,Validation,Angularjs Directive,请检查我在plunker上的工作 这里我有两个按钮保存和修改。当我使用save(键入submit)按钮时,表单将在调用函数之前进行验证。现在,我想为modify(type button)按钮实现相同的验证。因此,当我单击它时,表单应该在调用modify函数之前进行验证 或者,如果您还有其他解决方案,我将继续实施,但请记住,我需要在同一表单上使用多个按钮进行验证 提前感谢…您可以将scope.Modify()移动到指令中。我认为这样更具语义。然后返回false,这样表单就不会真正提交并运行您想要的

请检查我在plunker上的工作

这里我有两个按钮保存和修改。当我使用save(键入submit)按钮时,表单将在调用函数之前进行验证。现在,我想为modify(type button)按钮实现相同的验证。因此,当我单击它时,表单应该在调用modify函数之前进行验证

或者,如果您还有其他解决方案,我将继续实施,但请记住,我需要在同一表单上使用多个按钮进行验证


提前感谢…

您可以将
scope.Modify()
移动到指令中。我认为这样更具语义。然后返回false,这样表单就不会真正提交并运行您想要的任何提交逻辑


你可以尝试这个模块,因为它可以自动完成你想要的,而不需要你编写任何复杂的代码-这是一个无耻的插件,正如我写的:-)你好,摩根,你给出的解决方案将只适用于修改按钮,如果我需要添加更多的按钮,我不能使用这个。此外,如果我们使用您的解决方案,请告诉我如何按照您的解决方案在控制器中实现逻辑部分。逻辑部分在指令中定义,我不需要。只需将其移动到控制器中即可。在本例中,您必须将
scope
重命名为
$scope
,以利用DI。由于您从未为指令的返回对象提供
范围
值,因此它默认为
false
,因此您实际上是在指令和控制器之间共享一个范围。对于可重用组件,通常不建议使用此方法。当您为通过单击修改按钮调用的函数返回
false
时,就会发生这种神奇的情况/
                    scope.submit = function (event) {
                      submitController.setAttempted();
                      if (!scope.$$phase) scope.$apply();

                      if (!formController.$valid) return false;

                      scope.$apply(function() {
                          fn(scope, {$event:event});
                      });
                    }

                    formElement.bind('submit', scope.submit);

                    scope.Modify = function () {
                        // process scope.session
                        scope.submit();

                        alert('Modified!');

                        return false;
                    };