如何检查转录表格在指令中的有效性?

Mat*_*ics 10 javascript angularjs

重写此问题以澄清

如何检查转录表格在指令中的有效性?我想签myForm.$validlink function指令.我会在我的指令中注入不同类型的表格,或者以不同的形式使用我的指令

困难在于范围是孤立的,并且没有以下答案对我有效.

请在这里找到完整的代码,

https://plnkr.co/edit/K3IrE5KVehWXFM9JEMvE?p=preview

我希望在表单无效时禁用"保存"按钮.

Der*_*ler 8

要回答您的主要问题,您可以像任何其他模型值一样公开和绑定表单:

angular.module("main", [])
		.directive("formDirective", formDirective);

function formDirective() {
  return {
    restrict: "A",
    scope: {
      formModel: "=formModel"
    },
    link: function (scope, element, attrs) {
      scope.$watch("formModel.$valid", function (newValue, oldValue) {
       console.log(newValue, oldValue);
      });
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="main">
	<div form-directive form-model="myForm">
	   <div>
	   <form name="myForm">
	      <div>
	      	<input type="text" ng-model="name" required="required">
	      </div>
         Valid: {{myForm.$valid}}
	   </form>
	   <div>
	</div>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,从我们的聊天对话中可以清楚地看到,您的整体问题更为复杂.

我在这里添加了一个工作示例:https://plnkr.co/edit/lkfdmc0PLRadfYFVhFAm?p = preview

这里要实现的关键方面是:

  • 您正在打开一个模态对话框$uibModal.open,它将实例化引用的控制器editCtrl并加载您的模板editCtrl.html.
  • 加载过程包括Angular正在编译模板.此模板包含根级别的指令,因此也需要编译该指令.
  • 该指令使用transclusion并加载模板dialog.html.这里需要注意的是,esDlg指令的范围现在可以在模板中使用dialog.html,因此您可以访问scope指令声明中定义的所有属性.
    您已经使用对话框标题和文本来使用它.
  • 我们所要做的就是在这里绑定有效性信息,以便我们可以在对话框中使用它.