angularJs入门第一篇:基础概念

       随着移动互联网的发展,云服务的普及,数据服务和视图展示已经逐渐分离,传统的ASP,JSP,Freemarker等后台视图技术已经慢慢淡出人们的视线(在传统企业BS开发中还比较多),原来使用原生开发的Android和IOS应用也可以部分使用html5来开发。

      基于HTML的开发之前一直首选的是jquery之类的DOM操作类库,优点是入门门槛低,只要掌握ajax和操作dom的常用API就可以开发,缺点是代码编写较繁琐,代码量比较大,对于复杂的界面开发不同层次的开发人员编写的代码千差万别,很难维护。比如创建dom,有些人喜欢通过拼装HTML代码,有些人喜欢通过使用jqueryAPI来创建;绑定事件:有些人喜欢在html中拼接onclick事件,有些人喜欢在js代码中查询绑定。一直到最近接触了angularJS后,发现这才是前端开发的终极武器:数据双向绑定,模板技术(js平台)等特性大大减少了前台开发的代码量和复杂性。

     关于angularjs的简介,大家可以看下百度百科的介绍:augularjs百度百科

     下面列出几个angularJS中的几个常用概念:angularjs的版本使用1.5.3,官方API地址:angularjsAPI

      1,模块(ngModule)

      2,控制器(controller)

      3,指令(directive)

      4,过滤器(filter)

      5,服务(service/factory)

      掌握这几个概念对使用angularjs编程尤为重要。

      下面是一个简单的例子来演示模块,控制器,以及无处不在的数据双向绑定特性的使用。

       代码的目录结构使用如下所示结构:

      

         说明:

               1,angular和bootstrap存放的是angular类库和bootstrap类库的代码;     

               2,script存放的是我们编写的js脚本代码

               3,style存放的是我们编写的css代码

               4,template存放的是HTML视图模板

               5,index.html是我们应用的入口

         index.html的源代码如下:

        

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8"></meta>
		<link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css" />
		<script type="text/javascript" src="angular/angular.js"></script>
		<style type="text/css">
			form{
				margin: 20px 400px
			}
		</style>
		<script type="text/javascript" src="script/app.js"></script>
	</head>
	<!--声明所加载的模块-->
	<body ng-app="practice1">
		<!--声明所使用的控制器-->
		<form ng-controller="userCtrl">
			<div class="form-group">
				<label for="userName">用户姓名</label>
				<!--声明绑定的数据模型-->
				<input type="text" class="form-control" id="userName" ng-model="user.userName"/>
			</div>
			<div class="form-group">
				<label for="userPhone">用户电话</label>
				<input type="text" class="form-control" id="userPhone" ng-model="user.userPhone"/>
			</div>
			<div class="form-group">
				<label for="userAge">用户年龄</label>
				<input type="text" class="form-control" id="userAge" ng-model="user.userAge"/>
			</div>
			<div class="form-group">
				<label for="userSex">用户性别</label>
				<input type="radio" ng-model="user.userSex" value="1"/>男
				<input type="radio" ng-model="user.userSex" value="0"/>女
			</div>
			<input class="btn btn-default" type="submit" value="Submit" ng-click="getData()">
			<div>
				<!--输出-->
				{{result|json}}
			</div>	
		</form>	
	</body>
</html>

              对应的js代码如下,app.js:

 

//创建模块
var practice = angular.module("practice1", []);

//创建控制器
practice.controller("userCtrl", ["$scope", function(scope) {
	//向作用域中绑定user对象
	scope.user = {
			userName: "张三",
			userPhone: "12345678912",
			userAge: 11,
			userSex: 1
		}
		//向作用域中绑定getData函数
	scope.getData = function() {
		scope.result = scope.user;
	}
}]);


        说明:

              1,该demo中表单的数据和作用域中的user对象已经实现了双向绑定,改变任何一方,另外一方都将同步变化。

              2,ng-app指令声明的是该应用所使用的模块名称,对应的模块定义由JS代码中的angular.module来定义。

              3,ng-controller指令声明的是控制器名称,对应的控制器定义由JS代码中的practice.controller来定义。

              3,只有绑定在作用域中的数据才能实现双向绑定的特性,比如result属性在页面初始化的时候没有绑定到scope中,所以页面中输入为空,当触发getData事件后,才将 result绑定到作用域中,在页面中会实时显示出来

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值