AngularJS(六)

今天开始学习AngularJS的调用内置服务的相关知识
ng有一种分层结构思想在里面
可以大致分为3层:
控制器层:这个就是加载controller()方法时候的控制器,一般代码量较少,轻薄
服务层:也被叫做service层,服务层负责完成前端的业务逻辑
DAO层:即数据访问层,根据不同位置的DAO有不同的工作,如果是在服务端编程中的,负责对数据库执行CRUD操作;如果是在前端编程中的话,就是负责和服务端通信,调用服务端API对服务端数据进行CRUD操作(CRUD指的是增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete))

$animate服务
有以下一些方法:
enter(element,parent,after,[done])----该方法将element元素插入parent中的after之后,然后运行done函数
leave(element,[done])----直接删除element元素,然后执行函数done
move(element,parent,after,[done]):–将一个element元素移动到parent中或者after之后,然后运行done函数(注:parent就是一个父元素,after相当于兄弟元素,这个和enter不一样的地方就在于move的元素本身就是存在于DOM模型中的,只是移动,enter插入一个全新的)
addClass(element,className,[done])-----给元素添加一个className样式名,然后执行函数done
removeClass(element,className,[done])-----给元素删除className样式名,然后执行函数done
setClass(element,add,remove,[done]):-----添加或移除,从上

下面一个使用leave和enter的案例

<body ng-app="app" ng-controller="ctrl" >
		<button id="1" fk-dir >淡入/淡出</button>
		<script>
			var app=angular.module('app',['ngAnimate']);
			       app.directive("fkDir",function myDir($animate){
					  function link(scope,element,attr){
						  var show=false;
						  var parent = element.parent();
						  var box;
						  
						  element.on('click',function(){
							 if(!show){
								 box = angular.element('<div class="fade">555</div>');
								 scope.$apply($animate.enter(box,parent,element,function(){
									 alert("hello");
								 }));
							 } 
							 else{
								 scope.$apply($animate.leave(box,function(){
									 console.log("删除完成");
									  alert("hello1");
									  
								 }));
							 }
							 show = !show;
						  });
					  } 
					  return{
						  restrict:'A',
						  link:link
					  };
				   });
				   app.controller('ctrl',angular.noop);
		</script>
	</body>

通过添加css样式,可以增加动画效果

             .fade{
				width:150px;
				height: 80px;
				background-color: #FF0000;
				border:1px solid black;
				transition:1s linear all;
			}
			.fade.ng-enter{ opacity:0;  }
			.fade.ng-enter.ng-enter-active{ opacity:1 ;}
			.fade.ng-leave{ opacity:1; }
			.fade.ng-leave.ng-leave.ng-leave-active{ opacity:0 ;}

注:这个需要导入库

<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular-animate.min.js"></script>

这是倾向于动画效果的库,$animate服务本质上就是带点动画效果的感觉的

** c a c h e F a c t o r y 服 务 ∗ ∗ 该 服 务 用 于 创 建 缓 存 对 象 。 通 过 调 用 方 法 的 时 候 传 入 一 个 字 符 串 类 型 的 缓 存 i d , 让 程 序 得 到 一 个 cacheFactory服务** 该服务用于创建缓存对象。 通过调用方法的时候传入一个字符串类型的缓存id,让程序得到一个 cacheFactoryidcacheFactory.Cache对象-该对象就是一个缓存对象

大体上常用的有如下方法:
put(key,value)-------存入键对key是字符串类型,value可以是任意类型
get(key)-----------根据key来获取value
romove(key)-----------根据key来删除value
removeAll()--------删除所有键对
destroy()-----------销毁整个缓存对象
info()----------获取缓存对象的信息,包括id、size

<body ng-app="app" ng-controller="ctrl">
		<input ng-model="newCacheKey" placeholder="Key" >
		<input ng-model="newCacheValue" placeholder="Value">
		<button ng-click="put(newCacheKey, newCacheValue)" >缓存</button>
		 <p ng-if="keys.length">缓存数据</p>
		 <div ng-repeat="key in keys">
			 <span ng-bind="key"></span>  ->   <b ng-bind="cache.get(key)"></b>
		 </div>
		 <p>缓存信息</p>
		 <div ng-repeat="(key,value) in cache.info()">
			 <span ng-bind="key" ></span>  :  <b ng-bind="value"></b>
		 </div>
		 <script type="text/javascript">
			 angular.module('app',[])
			 .controller('ctrl',function($scope,$cacheFactory){
				 $scope.keys=[];
				 $scope.cache = $cacheFactory('cacheId');
				 $scope.put = function(key,value){
					 if(angular.isUndefined($scope.cache.get(key))){
						 $scope.keys.push(key);
					 }
					 $scope.cache.put(key,angular.isUndefined(value)?null:value);
				 };
			 });
		 </script>
	</body>

上面的代码是用了put和info,get的方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值