javascript - AngularJS - 在父 View 中单击 'save' 按钮时验证指令中的表单

标签 javascript angularjs forms validation angularjs-directive

所以我有一个由多个指令组成的 View 。每个指令在其模板中都有一个表单。

<div>
  <form name="blah">
    <input name="name1" ng-model="abc">
    <directive-a something-a="a"></directive-a>
    <directive-b something-b="b"></directive-b>
  </form>
</div>
<button ng-click="save( blah )">Save</button>
  1. 单击“保存”按钮时如何验证“指令-a”和“指令-b”中的表单?
  2. 用户可以从“directive-b”中导航到另一个 View 。在这种情况下,如果表单“blah”是脏的,则必须通知用户在导航离开之前保存他的更改。如何检查“directive-b”中“blah”的形式有效性?

非常感谢任何见解。谢谢!

最佳答案

1。单击“保存”按钮时如何验证“指令-a”和“指令-b”中的表单?

您可以从 $scope.form 之类的 Controller 访问此表单。如果任何子项无效,在这种情况下指令-a 或指令-b $scope.form.$valid 将为 false。所以例如在保存功能中你可以有这样的东西

$scope.save = function() {
    if( !$scope.form.$valid ) {
        applyError();
        return;
    }
    ...   
}

保存将被取消并应用错误(当然你必须自己实现这个错误应用功能......)

2。用户可以从“指令-b”内导航到另一个 View 。在这种情况下,如果表单“blah”是脏的,则必须通知用户在导航离开之前保存他的更改。如何检查“directive-b”中“blah”的形式有效性?

在这里,您可以像这样检查表单是否脏 $scope.form.$dirty 如果它脏了,就停止重定向用户并显示警报或其他东西。

希望对您有所帮助...:)

关于javascript - AngularJS - 在父 View 中单击 'save' 按钮时验证指令中的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33040934/

相关文章:

javascript - Chrome 内容脚本在给定选项卡的所有页面中运行

html - 从用作图标的重叠背景图像中停止占位符/输入文本?

forms - 在 Marionette js 中处理单选按钮表单

javascript - 屏幕上的物体太多时发生碰撞问题

javascript - Highcharts 导出为 svg

javascript - Phonegap 3.0 - Android : Native Scrollbar Not Visible

javascript - 如何在 Controller 加载之前加载数据?

javascript - Angular js 搜索过滤器(ng-repeat 内的日期和 ng-repeat)

javascript - 如何使用 jquery 添加包含 AngularJS 表达式的 ajax 加载内容

css - 以嵌入式形式隐藏带有CSS的输入字段