我正在尝试在博客文章(尤其是ng禁用形式)的表单中使用角度表单验证。由于某些原因,我无法确定提交按钮没有被禁用,除非所有三个输入字段均有效,否则应该处于应有的状态。谢谢您的帮助。
这是我的博客模板
<div ng-controller='BlgoCtrl'> <div class='container'> <h1> Teewinot Blgo</h1> <div class="row"> <div class='col-md-12'> <form role='form' name='blgoPost' novalidate> <div class='form-group'> <label for='blgoTitle'>Title</label> <input name='title' type="title" class='form-control' placeholder='Technologies of the Future' required><br> <label for='blgoContent'>Content</label> <textarea name='content' rows='8' type="content" class='form-control' placeholder='The technical innovations of the future will be diverse and impactful on the individual......' required></textarea><br> <label for='blgoPassCode'>PassCode</label> <input name='passcode' type="passcode" class='form-control' placeholder='•••••••••••••••' required><br> <button type="submit" class='btn btn-primary' ng-disabled="blgoPost.$invalid">Submit Post</button> </div> </form> </div> </div>
这是我的index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Teewinot</title> <script src="bower_components/angular/angular.js"></script> <script src="bower_components/jquery/dist/jquery.js"></script> <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="bower_components/angular-route/angular-route.js"></script> <link href="bower_components/bootstrap/dist/css/bootstrap.css" rel="stylesheet"> </head> <body ng-app="Teewinot"> <ng-include src="'app/templates/partials/navbar.html'"></ng-include> <ng-view></ng-view> <!-- angular module defintion and reoutes --> <script src="app/js/app.js"></script> <script src="app/js/routes.js"></script> <!-- controllers --> <script src="app/js/controllers/blog.controller.js"></script> </body> </html>
这是我的博客控制器
angular.module('Teewinot').controller('BlgoCtrl', function($scope, $http) { 'use strict' });
您在ng-model表单的每个字段中都缺少您。请记住,当你提到ng-model在当时任何形式的字段ng- model创建表单名对象中的额外的对象与特定的name属性,然后考虑而表单验证一样$error,$valid,$invalid,等。
ng-model
ng- model
name
$error
$valid
$invalid
当您的形式name是blgoPost,当角编译该页面时,它在内部创建的名称的范围内的对象blgoPost。并且将具有name&ng- model分配给它们的所有输入字段添加到该blgoPost对象内部。但是,如果您不提及ng- model表单字段,那么它将永远不会添加到blgoPost表单对象中。
blgoPost
的HTML
<form role='form' name='blgoPost' novalidate=""> <input name="first" /> <div class='form-group'> <label for='blgoTitle'>Title</label> <input name='title' type="title" class='form-control' ng-model="test1" placeholder='Technologies of the Future' required=""> <br> <label for='blgoContent'>Content</label> <textarea name='content' rows='8' type="content" ng-model="test2" class='form-control' placeholder='The technical innovations of the future will be diverse and impactful on the individual......' required=""></textarea> <br> <label for='blgoPassCode'>PassCode</label> <input name='passcode' type="passcode" ng-model="test3" class='form-control' placeholder='•••' required="" /> <br/> <button type="submit" class='btn btn-primary' ng-disabled="blgoPost.$invalid">Submit Post</button> </div> </form>
工作jsfiddle