<form>标记之外的角度表单验证

时间:2018-02-12 05:52:13

标签: angularjs angular-forms

这是一个愚蠢的问题但是有可能在窗外获得形式状态。像,

<form name="form">
   <input type="text" name="name" required />
</form>

<button ng-disabled="form.$invalid"></button> 

因为,按钮是外部表格标签,无法获取状态 我们是否有其他方法可以实现相同的目标(可能正在使用其他语言)?

4 个答案:

答案 0 :(得分:1)

你可以在你的控制器范围内的任何地方使用表单对象,在我的理解中,angularJs将表单对象绑定到当前的ctrl范围,这就是为什么我们能够在形式范围之外使用它。
这里是演示

SELECT s.total,s.is_completed,p.tot,p.completed,st.uid,st.unm,sl.verify,sl.saldate FROM (SELECT sum('count') As total, sum('is_completed') As is_completed, user_id AS stepid FROM stepvice) AS s LEFT OUTER JOIN (SELECT id AS uid,name AS unm from staffcredentials) As st ON st.uid=s.stepid LEFT OUTER JOIN (SELECT sum('count') As tot, sum('is_completed') As completed, user_id AS pageid FROM pagevice) AS p ON p.pageid=s.stepid LEFT OUTER JOIN (SELECT check AS verify, user_id AS salid,date AS saldate  FROM staffsalary) As sl ON sl.salid=p.pageid WHERE st.uid=$ids[$i]"
angular
 .module('app', [])
 .controller('ctrl', AppCtrl)
 
 function AppCtrl() {
    this.showFormInfo = function(form) {
    console.log(form);
    }
    
 }
 

答案 1 :(得分:0)

你需要做两件事。

  1. ng-model 添加到输入
  2. 使用按钮 ng-click 调用角度函数。
  3. 请尝试以下代码

    <form name="form">
       <input type="text" name="test" ng--model="test" required />
    </form>
    
    <button ng-disabled="form.$invalid" ng-click="buttonClicked()"></button> 
    

    现在您可以访问buttonClicked()函数内的测试。在控制器中添加此功能。

答案 2 :(得分:0)

我发布的问题非常好,可能对开发人员有用 实际上,角度也保留了它的块之外的形式范围。

但永远不要在表单块中使用 name =“name”属性。 否则表格将不会被验证。

所以答案是, 您可以在<form>块之外获取表单状态(可能仅适用于Angular)。

答案 3 :(得分:0)

首先,我发布到我自己的问题的答案是错误的。 经过大量的研究后,我发现了我发布的问题。

请看看这个plunker,你会越来越了解。 https://plnkr.co/edit/IQ4eJ0NEM3rgWH2Atfh9?p=preview

是否,无关紧要  1. name =&#34; name&#34; 属性,
 2. <form name="form">
 3.或者您想要的表单状态超出<form>标记。

问题是ng-if条件切换你的表格 您可以改用ng-showng-hide

谢谢。