Javascript 从外部访问表单验证指令

Javascript 从外部访问表单验证指令,javascript,angularjs,Javascript,Angularjs,我是angular方面的初学者。我的表单具有验证功能,仅在验证通过时启用保存按钮 <input type="submit" value="Save" ng-disabled="!frmRegister.$valid" /> 我有指令,该指令将负责全球范围内的表单提交 app.directive('mysavebtn',function(){ return { restrict : "E",

我是angular方面的初学者。我的表单具有验证功能,仅在验证通过时启用保存按钮

<input type="submit" value="Save" ng-disabled="!frmRegister.$valid" />

我有指令,该指令将负责全球范围内的表单提交

app.directive('mysavebtn',function(){
            return {                
                restrict : "E",
                scope :{
                },
                controller : function($scope){

                },
                link : function(scope,elem,attr){

                },
                template : '<div style="clear:both;" >'
                 +'<input type="submit" ng-disabled="!frmRegister.$valid" value="Directive Save"  />'
           +'</div>'
            }
        });
app.directive('mysavebtn',function(){
返回{
限制:“E”,
范围:{
},
控制器:功能($scope){
},
链接:功能(范围、要素、属性){
},
模板:“”
+''
+''
}
});
但即使表单有效,指令保存按钮也始终处于禁用状态注意:我将保存按钮保留在表单中以了解验证

请检查工作示例


如何从mysavebtn指令获取访问表单验证?请注意。

如果您在指令中使用的是隔离作用域,则可以使用“=”符号(双向绑定)在该作用域中传递表单有效性状态。为此,您需要稍微修改指令的HTML:

<mysavebtn form-valid="frmRegister.$valid"></mysavebtn>

以及:

app.directive('mysavebtn', function() {
  return {
    restrict: "E",
    scope: {
      formValid: "="
    },
    controller: function($scope) {

    },
    link: function(scope, elem, attr) {

    },
    template: '<div style="clear:both;" >' + '<input type="submit" ng-disabled="!formValid" value="Directive Save"  />' + '</div>'
  }
});
app.directive('mysavebtn',function(){
返回{
限制:“E”,
范围:{
formValid:“”
},
控制器:功能($scope){
},
链接:功能(范围、要素、属性){
},
模板:“”+“”+“”
}
});
现在,表单有效性状态在指令的模板中通过 formValid变量。 见工作表。
有关更多信息,请阅读Angular guide。

如果在指令中使用隔离作用域,则可以使用“=”符号(双向绑定)在该作用域中传递表单有效性状态。为此,您需要稍微修改指令的HTML:

<mysavebtn form-valid="frmRegister.$valid"></mysavebtn>

以及:

app.directive('mysavebtn', function() {
  return {
    restrict: "E",
    scope: {
      formValid: "="
    },
    controller: function($scope) {

    },
    link: function(scope, elem, attr) {

    },
    template: '<div style="clear:both;" >' + '<input type="submit" ng-disabled="!formValid" value="Directive Save"  />' + '</div>'
  }
});
app.directive('mysavebtn',function(){
返回{
限制:“E”,
范围:{
formValid:“”
},
控制器:功能($scope){
},
链接:功能(范围、要素、属性){
},
模板:“”+“”+“”
}
});
现在,表单有效性状态在指令的模板中通过 formValid变量。 见工作表。
有关更多信息,请阅读Angular guide。

如果在指令中使用隔离作用域,则可以使用“=”符号(双向绑定)在该作用域中传递表单有效性状态。为此,您需要稍微修改指令的HTML:

<mysavebtn form-valid="frmRegister.$valid"></mysavebtn>

以及:

app.directive('mysavebtn', function() {
  return {
    restrict: "E",
    scope: {
      formValid: "="
    },
    controller: function($scope) {

    },
    link: function(scope, elem, attr) {

    },
    template: '<div style="clear:both;" >' + '<input type="submit" ng-disabled="!formValid" value="Directive Save"  />' + '</div>'
  }
});
app.directive('mysavebtn',function(){
返回{
限制:“E”,
范围:{
formValid:“”
},
控制器:功能($scope){
},
链接:功能(范围、要素、属性){
},
模板:“”+“”+“”
}
});
现在,表单有效性状态在指令的模板中通过 formValid变量。 见工作表。
有关更多信息,请阅读Angular guide。

如果在指令中使用隔离作用域,则可以使用“=”符号(双向绑定)在该作用域中传递表单有效性状态。为此,您需要稍微修改指令的HTML:

<mysavebtn form-valid="frmRegister.$valid"></mysavebtn>

以及:

app.directive('mysavebtn', function() {
  return {
    restrict: "E",
    scope: {
      formValid: "="
    },
    controller: function($scope) {

    },
    link: function(scope, elem, attr) {

    },
    template: '<div style="clear:both;" >' + '<input type="submit" ng-disabled="!formValid" value="Directive Save"  />' + '</div>'
  }
});
app.directive('mysavebtn',function(){
返回{
限制:“E”,
范围:{
formValid:“”
},
控制器:功能($scope){
},
链接:功能(范围、要素、属性){
},
模板:“”+“”+“”
}
});
现在,表单有效性状态在指令的模板中通过 formValid变量。 见工作表。
有关更多信息,请阅读《角度指南》

建议的指令间通信方式和最佳实践之一是使用
require
访问其他指令控制器
在本例中为表单
指令)

我修改了你的plnkr:

app.directive('mysavebtn',function(){
返回{
限制:'E',
要求:“^form”,
作用域:{},
链接:函数(范围、元素、属性、formCtrl){
scope.formCtrl=formCtrl;
},
模板:“”+
'' +
''
}
});
将您的
mysavebtn
放入
表单
,以便它可以访问它。您现在可以访问整个
表单
API,并且有更多的可能性


顺便说一句:没有必要为此创建绑定(正如现在接受的其他答案一样)。

建议的指令间通信和最佳实践之一是使用
require
访问其他指令控制器(
在本例中为form
指令)

我修改了你的plnkr:

app.directive('mysavebtn',function(){
返回{
限制:'E',
要求:“^form”,
作用域:{},
链接:函数(范围、元素、属性、formCtrl){
scope.formCtrl=formCtrl;
},
模板:“”+
'' +
''
}
});
将您的
mysavebtn
放入
表单
,以便它可以访问它。您现在可以访问整个
表单
API,并且有更多的可能性


顺便说一句:没有必要为此创建绑定(正如现在接受的其他答案一样)。

建议的指令间通信和最佳实践之一是使用
require
访问其他指令控制器(
在本例中为form
指令)

我修改了你的plnkr:

app.directive('mysavebtn',function(){
返回{
限制:'E',
要求:“^form”,
作用域:{},
链接:函数(范围、元素、属性、formCtrl){
scope.formCtrl=formCtrl;
},
模板:“”+
'' +
''
}
});
将您的
mysavebtn
放入
表单
,以便它可以访问它。你现在