发表于: 2017-05-31 23:11:31
4 1051
昨天做了啥/收获:
看了半天的接口文档结果早上后台给我说不要看了 很多东西都要重写。
其实蛮开心因为我觉得这就是完全的工作模拟家家酒游戏。
*部分来自网络,权删!
抽出不属于controller的工作到Service中,在controller中通过依赖注入来使用service。
不要操作dom.angular为了自动操作dom 用数据绑定。
执行自定义DOM操作,可以把表现逻辑抽取到directive(自定义指令)中。
执行无状态或有状态的。controller共享的代码。就用services代替。
实例化或管理其他组件的生命周期。(比如创建一个服务实例)
复用controller,一个控制器一半只负责一小块试图。
controller不相互调用。控制器之间的交互通过事件进行
ng-init用来初始化数据,ng-repeat用来遍历,对于ng-repeat来说,$index表示当前的索引,$first判断是否为头元素,$last判断是否为尾元素,$middle判断是否为非头非尾元素。
在循环中批量添加DOM元素的时候,会推荐使用DocumentFragment,为什么呢,因为如果每次都对DOM产生变更,它都要修改DOM树的结构,性能影响大,如果我们能先在文档碎片中把DOM结构创建好,然后整体添加到主文档中,这个DOM树的变更就会一次完成,性能会提高很多。
ng-src和ng-href都跟ng-bind的功能差不多,等到angular完全加载完之后,再去加载相应的资源,提升用户体验。
脏检查机制:它并不是周期性的!!!而是透过某些事件才能触发脏检查。
代码中,在执行apply函数之前会首先检查Angular内部是不是正在做“脏检查”,如果是就直接执行函数,不用$apply;反之没有启动脏检查,那么就$apply执行该函数。 $timeout有很多妙用,但一定不要滥用,$timeout实现apply功能不应该是我们的第一方案,第一方案仍然应该是使用Angular内置的指令。
myModule.directive("myclick", function() {
return function (scope, element, attr) {
element.on("click", function() {
scope.counter++;
scope.$apply(function() {
scope.counter++;
});
});
};
});
myModule.controller("CounterCtrl", function($scope) {
$scope.counter = 0;
});
$http与$resource
一.使用$http$http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容。这个函数返回一个promise对象,具有success和error两个方法。例如代码:
$http({
method:"GET",
url:'/xx/xx'
}).success(function(data,status,headers,config){
//当相应准备就绪时调用
}).error(function(data,status,headers,config){
//当响应错误状态返回时调用
})
这个方法实际上返回了一个promise对象。当promise返回的时候,我们可以将$http方法的运行结果当作变量返回。例如:
var promise = $http({
method = 'GET',
url:'/xx/xx'
});
由于$http方法返回一个promise对象,我们可以在响应返回的时候用then方法来处理回调。如果使用then方法,可以得到一个特殊的参数,它代表了相应对象的成功或者失败信息,还可以接受两个可选的函数作为参数。或者使用success和error进行回调代替。
promise.then(function(resp){
//resp是一个响应对象
},function(resp){
//带有错误信息的resp
});
或者使用success/error方法:
promise.success(function(data,status,headers,config){
//处理成功的响应
});
promise.error(function(data,status,headers,config){
//处理非成功的响应
})
$resource服务可以将$http请求转换成save和update等简单形式。我们可以通过$resource服务来处理复杂的细节,而无需自己写重复和繁琐的的业务代码。
用法:
1.加入angular-resource.js文件。
2.将ngResource当作依赖来进行引用:
angular.module('myApp',['ngResource']);
这样就可以使用ngResource服务。
$resource基于HTTP GET方法
两个HTTP GET类型的方法可以接受3个参数:params,successFn(响应成功时的回调函数),errorFn(响应不成功时的回调函数)
明天做啥:继续写DOME。
问题:不是很明白脏检查的必要性,以及$Http,$resource的核心区别;
一个小知识点往往会引出一大堆的知识点,- =真是学无止境啊 同理如图:
唉 心累!!!
评论