AngularJS表单提交实例详解

发布时间 - 2026-01-10 23:08:26    点击率:

本文实例讲述了AngularJS表单提交。分享给大家供大家参考,具体如下:

AngularJS中的数据绑定

AngularJS创建实时模板来代替视图,而不是将数据合并进模板之后更新DOM。任何一个独立视图组件中的值都是动态替换的。

ng-app属性声明所有被其包含的内容都属于这个AngularJS应用,这也是我们可以在Web应用中嵌套AngularJS应用的原因。只有被具有ng-app属性的DOM元素包含的元素才会受AngularJS影响。

当AngularJS认为某个值可能发生变化时,它会运行自己的事件循环来检查这个值是否变“脏”。如果该值从上次事件循环运行之后发生了变化,则该值被认为是“脏”值。这也是Angular可以跟踪和响应应用变化的方式。

这个过程被称作脏检查。脏检查是检查数据模型变化的有效手段。当有潜在的变化存在时,AngularJS会在事件循环时执行脏检查来保证数据的一致性。

借助AngularJS,不需要构建复杂和新的JavaScript功能,就可以在视图中实现类自动同步的机制。

我们使用ng-model指令将内部数据模型对象($scope)中的name属性绑定到了文本输入字段上。

数据模型对象是指$scope对象。$scope对象是一个简单的JavaScript对象,其中的属性可以被视图访问,也可以同控制器进行交互。
双向数据绑定意味着如果视图改变了某个值,数据模型会通过脏检查观察到这个变化,而如果数据模型改变了某个值,视图也会一句变化重新渲染。

模块

在AngularJS中,模块是定义应用的最主要的方式。模块包含了主要的应用代码,它允许我们使用angular.module()方法来声明模块,这个方法能够接受两个参数,第一个是模块的名称,第二个是依赖列表,也就是可以被注入到模块中的对象列表。

angular.module('myApp',[]);

控制器

AngularJS中的控制器是一个函数,用来向视图的作用域中添加额外的功能。我们用它来给作用域对象设置初始状态,并添加自定义行为。
当我们在页面上创建一个新的控制器时,AngularJS会生成并传递一个新的$scope给这个控制器。

AngularJS同其他JavaScript框架最主要的一个区别就是,控制器并不适合用来执行DOM操作、格式化或数据操作,以及除存储数据模型之外的状态维护操作。它只是视图和$scope之间的桥梁。

表达式

用{{}}符号将一个变量绑定到$scope上的写法本质上就是一个表达式:{{expression}}。对表达式进行的任何操作,都会在其所属的作用域内部执行,因此可以在表达式内部调用那些限制在此作用域内的bianl,并进行循环、函数调用、将变量应用到数学表达式中等操作。

本例子采用技术

① 页面使用bootstrap布局,页面是bootstrap的模板

② 前端框架AngularJS

③ 后台使用SpringMVC

整个代码的功能是在输入内容后,提交给后台,后台再返回数据显示到页面,提交时有验证提示。

我在这里列举了三种方式来做这次应用

1.全局作用域的控制器
2.模块划分的控制器
3.将后台请求做成服务抽离出来的控制器

JSP代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-cn" ng-app="MyApp">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>接口测试</title>
<!-- Bootstrap -->
<link href="css/bootstrap/bootstrap.min.css" rel="external nofollow" rel="stylesheet">
</head>
<body>
 <div ng-controller="keepController">
 <form name="testForm" novalidate>
 <div id="responseMsg" class="testMode" >
 <div>
  <h3>认证接口:</h3>
  <textarea required class="form-control" rows="3" id="authData" name="authData" ng-model="authData"></textarea>
  <span style="color:red" ng-show="testForm.authData.$dirty && testForm.authData.$invalid">
     <span ng-show="testForm.authData.$error.required">认证接口必填</span>
   </span>
   </div>
 <div>
  <h3>数据请求接口:</h3>
  <textarea required class="form-control" rows="3" id="reqData" name="reqData" ng-model="reqData"></textarea>
  <span style="color:red" ng-show="testForm.reqData.$dirty && testForm.reqData.$invalid">
     <span ng-show="testForm.reqData.$error.required">数据请求接口必填</span>
   </span>
 </div>
 <div style="text-align: right;margin-right: 20px;margin-top:10px;">
  <button class="btn btn-default" role="button" ng-click="keepTest()"
  ng-disabled="testForm.authData.$invalid ||
  testForm.reqData.$invalid"
  >连接测试</button>
 </div>
 <div>{{ansInfo}}</div>
 </div>
 </form>
 </div>
 <script src="js/angularJS/angular.min.js"></script>
 <script type="text/javascript">
//1.全局作用域的例子
 /* function keepController($scope,$http) {
  $scope.keepTest= function(){
  var pData = {authData:$scope.authData,reqData:$scope.reqData};
    $http({method:'POST',url:'testKeep',params:pData}).
    success(function(response) {
     $scope.ansInfo = response.a;});
  };
 } */
//2.模块化控制器
 /*var app = angular.module('MyApp',[]);
  app.controller('keepController',function($scope,$http){
  $scope.keepTest= function(){
  var pData = {authData:$scope.authData,reqData:$scope.reqData};
    $http({method:'POST',url:'testKeep',params:pData}).
    success(function(response) {
     $scope.ansInfo=response.a;});
  }
 }); */
 //3.请求服务抽出来的控制器
 angular.module('myapp.services',[]).factory('testService',function($http){
  var runRequest = function(pData){
  return $http({method:'POST',url:'testKeep',params:pData});
  };
  return {
  events:function(pData){
   return runRequest(pData);
  }
  };
 });
 angular.module('MyApp',['myapp.services']).
  controller('keepController',function($scope,testService){
  $scope.keepTest= function(){
   var pData = {authData:$scope.authData,reqData:$scope.reqData};
   testService.events(pData).success(function(response){
   $scope.ansInfo=response.a;
   });
  };
 });
 </script>
 <script src="js/jquery.js"></script>
 <script src="js/bootstrap/bootstrap.min.js"></script>
</body>
</html>

JAVA代码:

@RequestMapping(value = "testKeep", produces = "text/plain;charset=UTF-8")
@ResponseBody
public String testKeep(HttpServletRequest request,
  HttpServletResponse response) {
 System.out.println(request.getParameter("authData"));
 System.out.println(request.getParameter("reqData"));
 JSONObject ja = new JSONObject();
 ja.put("a", "aaa");
 ja.put("b", "bbb");
 ja.put("c", "ccc");
 System.out.println("test:"+ja.toString());
 return ja.toString();
}

更多关于AngularJS相关内容感兴趣的读者可查看本站专题:《AngularJS指令操作技巧总结》、《AngularJS入门与进阶教程》及《AngularJS MVC架构总结》

希望本文所述对大家AngularJS程序设计有所帮助。


# AngularJS  # 表单提交  # angularjs $http实现form表单提交示例  # AngularJS模仿Form表单提交的实现代码  # AngularJS中实现用户访问的身份认证和表单验证功能  # AngularJS使用angular-formly进行表单验证  # AngularJS使用ngMessages进行表单验证  # 详解AngularJS实现表单验证  # AngularJS实现表单手动验证和表单自动验证  # 使用AngularJS对表单提交内容进行验证的操作方法  # 绑定  # 是一个  # 会在  # 最主要  # 必填  # 自己的  # 都是  # 进阶  # 这也是  # 改变了  # 是在  # 也会  # 相关内容  # 第一个  # 一句  # 在此  # 不需要  # 才会  # 是指  # 感兴趣 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  php json中文编码为null的解决办法  js实现获取鼠标当前的位置  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  敲碗10年!Mac系列传将迎来「触控与联网」双革新  如何在万网开始建站?分步指南解析  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在自有机房高效搭建专业网站?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何在新浪SAE免费搭建个人博客?  网站优化排名时,需要考虑哪些问题呢?  微信小程序 闭包写法详细介绍  iOS验证手机号的正则表达式  Laravel如何处理CORS跨域请求?(配置示例)  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  如何基于PHP生成高效IDC网络公司建站源码?  如何用狗爹虚拟主机快速搭建网站?  微信小程序 input输入框控件详解及实例(多种示例)  如何快速重置建站主机并恢复默认配置?  Laravel怎么判断请求类型_Laravel Request isMethod用法  JavaScript如何实现路由_前端路由原理是什么  Laravel如何为API编写文档_Laravel API文档生成与维护方法  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  JS中对数组元素进行增删改移的方法总结  如何用IIS7快速搭建并优化网站站点?  Android仿QQ列表左滑删除操作  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  教你用AI将一段旋律扩展成一首完整的曲子  WEB开发之注册页面验证码倒计时代码的实现  Laravel如何使用withoutEvents方法临时禁用模型事件  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel如何配置Horizon来管理队列?(安装和使用)  成都网站制作公司哪家好,四川省职工服务网是做什么用?  HTML 中动态设置元素 name 属性的正确语法详解  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Swift中循环语句中的转移语句 break 和 continue  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Swift中swift中的switch 语句