$http服务是一个接受一个参数的函数,参数的类型是对象,用来配置生成的http的请求,该函数返回一个promise对象(关于promise规范,可以看看这篇文章) var promise = $http...该方法接收响应对象(response object)作为参数,然后必须返回响应对象或者 promise。...这个函数返回一个promise对象,具有success和error两个方法。...http方法返回一个promise对象,我们可以在响应返回时用then方法来处理回调。...replace( ):如果被调用,就会用改变后的URL直接替换浏览器中的历史记录,而不是在历史记录中新建一条信息,这样可以阻止『后退』。
作用域、数据双向绑定、模块 作用域(scope)是AngualrJs中的基础概念,一般而言,一个controller一个scope , 每个controller中内置一个数据模型对象scope。...而 scope对象是定义应用业务逻辑、控制器方法和视图属性的地方 。 上面的Demo中,业务变量number是$scope的一个属性,然后通过数据绑定的方式链接到view。...Angualr 1实现双向绑定的脏检查 AngualrJS 1中数据模型对象 $scope,就是普通的javascript对象(POJO),你在上面任意的添加属性和方法,Angular都支持并且能够实时双向绑定的...require: String, link: function(scope, iElement, iAttrs) { ... }, compile: // 返回一个对象或连接函数...能够隔离scope,甚至能够灵活的方式和其他scope交互,既可以使用=强大的双向绑定,而且AngularJs 1.5 scope中 <带了目前流行类似单向绑定的功能。
技术 基于字符串的parse和基于dom的compile过程: 事实上,Living template的compile过程相对与Dom-based的模板技术更加纯粹, 因为它完全的依照AST生成,而不是在原...而Angular在某种程度上替我们做了这样的工作,并提供我们使用。 在Angular里面我们常常通过服务来共享一些状态的,而这些管理状态和数据的服务,便是通过依赖注入的方式进行处理的。...Rx不是允诺,它本质上还是由订阅/发布模式引出来的,它的核心思想就是数据响应式,源头是数据产生者,经过一系列的变换/过滤/合并的操作,被数据消费者所使用,数据消费者何时响应,完全取决于数据流何时能流下来...Promise需要调用then或者catch才能够执行,catch是另一种形式的then,调用then或者catch之后,它返回一个新的Promise,这样新的Promise也可以同样被调用,所以可以做成无限的...Rx的observable被subscribe之后,并不是继续返回一个新的observable,而是返回一个subscriber,这样用来取消订阅,但是这也导致了链式断裂,所以它不能像Promise那样组成无限
可以采用如下方式避免 对于只用于展示的数据,使用单向绑定,而不是双向绑定; Angular的数据流是自顶而下,从父组件到子组件单向流动。单向数据流向保证了高效、可预测的变化检测。...Promise 和 Observable的区别 首先新版本的anuglar是推荐使用Observable的(属于RxJS),其次,对于Observable对象,可以使用.toPromise()转化为Promise...对象。...Promise,无论是否调用then。promise都会立即执行;而observables只是被创建,当调用(subscribe)的时候才会被执行。...Promise返回一个值;Observable返回0至N个值。
3 尽量将Ajax请求放到service中去做 Angular中使用service来组织那些可被复用的逻辑,除此之外,我们也可以将service理解为是对应一个领域对象的操作的集合,因此,通常会将一组Ajax...首先, $http是一个比较初级的依赖,与其实注入的业务服务不是一个抽象层级,如果在你的业务代码中直接操作http请求,给人的一种感觉就像是在SpringMVC的requestmethod中直接使用HttpServeletRequest...4 使用Promise处理Ajax的返回值, 而不是传递回调函数 Angular中所有的Ajax请求默认都返回一个Promise对象,不建议将处理Ajax返回值的逻辑通过回调函数的形式传递给发送http...请求的service,而应该是在调用service的地方利用返回的promise对象来决定如何处理。...正确的打开方式应该是这样的:service的API只需要返回promise,对应的处理函数的绑定在这个返回的promise上,这样我们只需要mock那个service的接口让它返回一个我们期望的promise
组件的测试 单独的service测试 Angular的测试工具 Angular的测试工具类包含了TestBed类和一些辅助函数方法,当时这不是唯一的,你可以不依赖Angular 的DI(依赖注入)系统,...spec的主要目的是测试组件,而不是服务。真实的服务可能自身有问题。 这个测试套件提供了最小化的UserServiceStub类,用来满足组件和它的测试的需求。...如果组件想期待的那样工作,click()通知组件的selected属性发出hero对象,测试程序通过订阅selected事件而检测到这个值,所以测试应该成功。...service的注入 刚刚接触angular2吧,对很多service的写法不是很了解,以至于真的是白白浪费了很多时间,尤其是在这个service的模拟上。...---- 多次调用同一个异步方法 相信大家对这段单元测试的代码很熟悉,这里就是模拟多次调用同一个方法时,返回不同的值。 这里是同步方法的模拟返回数据,那么异步方法同样可以。
当observable或promise返回data时,我们使用一个临时属性来保存内容。稍后,我们将相同的内容绑定到模板。...通过使用AsyncPipe, promise或observable可以直接在模板中使用,而不需要临时属性。 15. Authentication and Authorization的区别?...在服务器端验证凭据并返回JSON Web Token(JWT)。JWT是一个JSON对象,它有关于当前用户的一些信息或属性。一旦JWT返回给给客户端,客户端或用户将被该JWT所标记。...— 是一个函数 — 接受一个Observer对象(包含next、error、complete方法的对象)作为参数 — 返回 unsubscribe 函数,...6)如果应用程序较大时,我会考虑延迟加载而不是完全捆绑的应用程序。 27. 使用Angular的好处 可以添加自定义的directive. 优秀的社区支持。 客户端和服务器的通讯非常便利。
@Injectable表示该js文件所导出的文件是服务,而服务是可以通过注入来创建的。 服务的注入,是angular中用来剥离controller和业务逻辑的方式。...http: Http) { } 修改getBillTypes方法试试,看请求返回数据和http.get返回的是什么。...observation对象,事实上是observation返回值>。...通过toPromise转换成promise对象以后,就可以正常的使用then方法去处理返回值了。 通过promise的then方法,可以获得到服务器的返回值。...个返回值都是json字符串,而在angular还是先按字符串处理。
其本质上使用XMLHttpRequest或JSONP进行与后台的数据交互。...该方法接收请求配置对象(request configuration object)作为参数,然后必须返回配置对象或者promise 。...如果返回无效的配置对象或者 promise 则会被拒绝,导致$http 调用失败 */ request:...该方法接收响应对象(response object)作为参数, 然后必须返回响应对象或者promise。...如果返回无效的响应对象或者 promise 会被拒绝,导致$http调用失败。
该工具可以根据平台自动选择最佳的存储引擎,而不用用户关系具体的使用细节。模块内存储引擎的默认选择顺序是 SQLite,IndexedDB,WebSQL 和 LocalStorage。...string 或 null,表示正在使用驱动的名称; ready() —— 返回 Promise 对象,当存储初始化完成后会进入 resolved 状态; get(key)...—— 获取与给定键相关联的值,返回 Promise 对象; set(key, value) —— 设置给定键的值,返回 Promise 对象; remove(key) —— 删除与此键关联的值,返回 Promise...对象; clear() —— 清除整个键值存储,返回 Promise 对象; length() —— 获取已存储对象的个数,返回 Promise 对象; keys() —— 返回用存储中的所有键,返回...返回 Promise 对象 get(key: string): Promise { return this.
随着视图的不断增加, js文件 会越来越多, 而 AngularJS 默认需要把全部的 js 都一次性加载, 使用起来非常不便, 因此按需加载模块的需求会越来越强, 不过, AngularJS 并没有实现按需加载..., 如果这个对象有成员是 promise 对象, 路由就会等待 promise 对象完成再初始化 controller 。...是一个函数, 返回一个 promise 对象; resolver: ['$q', '$rootScope', function($q, $rootScope) {...// 创建一个延迟执行的 promise 对象 var defered = $q.defer(); // 使用 requirejs 的 require...(); }); }); 返回延迟执行的 promise 对象, route 会等待 promise
时,状态无法得知 Promise.all 接收 Promise 数组为参数,将多个Promise实例,包装成一个新的Promise实例,所有 resolve ,返回所有值 在不同的接口请求数据然后拼合成自己所需的数据...会将其后的函数(函数表达式或 Lambda)的返回值封装成一个 Promise 对象,而 await 会等待这个 Promise 完成,并将其 resolve 的结果返回出来 是写异步代码的新方式...方法,从停止地方开始执行,移向下一个状态 1.5. yield 与 return 相似:都能返回紧跟在语句后面那个表达式的值 区别:记忆功能,执行次数,返回值数量 1.6....一个参数时,返回该参数 参数不是对象,转成对象(undefined,null会报错),若为源对象位置,则跳过 可用来操作数组,将数组视为对象 浅拷贝非深拷贝(若源对象的有对象属性值,则拷贝的是该引用)...箭头函数中的this 箭头函数没有自己的this, 它的this是继承而来 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象, 定义它的时候,可能环境是window 箭头函数可以方便地让我们在
一部分事件适用于组件/指令,而少数事件只适用于组件。 ngOnChanges:当Angular设置其接收当前和上一个对象值的数据绑定属性时响应。...确保应用中已经移除了不使用的第三方库。 所有dependencies 和dev-dependencies都是明确分离的。 如果应用程序较大时,我会考虑延迟加载而不是完全捆绑的应用程序。...通常Observable比Promise更受欢迎,因为它不但提供了Promise特性,还提供了其它特性。使用Observable可以处理0,1或多个事件。你可以在每种情况下使用相同的API。...如果服务器的HTTP请求结果或其它一些异步操作不再需要,则Observable的订阅者可以取消订阅,而Promise将最终调用成功或失败的回调,即使你不需要通知或其提供的结果。...Promises vs Observables Promises: 返回单个值 不可取消 Observables: 可以使用多个值 可取消 支持map,filter,reduce和类似的操作符 ES 2016
组件和变化检测器 如你所知,Angular 2 应用程序是一颗组件树,而每个组件都有自己的变化检测器,这意味着应用程序也是一颗变化检测器树。顺便说一句,你可能会想。是由谁来生成变化检测器?...接下来我们来介绍一下 Immutable : Immutable 即不可变,表示当数据模型发生变化的时候,我们不会修改原有的数据模型,而是创建一个新的数据模型。...name 属性,我们不是直接修改原有对象,而是使用 Object.assign 方法创建一个新的对象。...OnPush 策略时,需要使用的 Immutable 的数据结构,才能保证程序正常运行。...为了提高变化检测的性能,我们应该尽可能在组件中使用 OnPush 策略,为此我们组件中所需的数据,应仅依赖于输入属性。 OnPush 策略是提高应用程序性能的一个简单而好用的方法。
); ... })(window, window.angular); 下载可以去官网下载,或者使用bower进行安装。...如果resolve中是一个promise对象,那么会等它执行成功后,才注入到控制器中,此时控制器会等待resolve中的执行结果。 详细的例子,可以参考下面的样例。...$routeChangeStart:这个事件会在路由跳转前触发 $routeChangeSuccess:这个事件在路由跳转成功后触发 $routeChangeError:这个事件在路由跳转失败后触发 使用...redirectTo: '/a' }); }); 上面的代码中,/b路径中的resolve关联来一个延迟方法,这个方法返回的时...Promise对象,而且3秒钟后才会返回结果。
有时候进入某个页面时,我们需要从多个 API 获取数据然后进行页面显示。管理多个异步数据请求会比较困难,但我们可以借助 Angular Http 服务和 RxJS 库提供的功能来实现上述的功能。...处理多个请求有多种方式,使用串行或并行的方式。 基础知识 mergeMap mergeMap 操作符用于从内部的 Observable 对象中获取值,然后返回给父级流对象。...forkJoin forkJoin 是 RxJS 版本的 Promise.all(),即表示等到所有的 Observable 对象都完成后,才一次性返回值。...forkJoin 接下来的示例,我们将使用 forkJoin 操作符。如果你熟悉 Promises 的话,该操作符与 Promise.all() 实现的功能类似。...一旦列表的 Observable 对象都发出值后,forkJoin 操作符返回的 Observable 对象会发出新的值,即包含所有 Observable 对象输出值的数组。
对于复杂一点,大型的项目,如果所有的内容一开始就加载,对首页的性能影响比较大,即使静态javascript文件使用CDN,对性能还是有很大的影响。...所有需要引入按需加载机制,而Angular1.x版本中,ocLazyLoad是一个不错的按钮加载解决方案。...(key-value),每一个value都是一个可以依赖注入的函数,并且返回的是一个promise(当然也可以是值,resloved defer)。...4.resolve中加载service resolve中加载services,但是请求都是异步的,返回的顺序不是按照顺序来的。...这个时候虽然在load里面已经加载dataService.js,但是在currentBook中是无法使用getBookById()方法,所以在currentBook对象中,所以必须重新加载booksService.js
而Yeoman就是来简化这个流程的!前面说的那些繁重的工作都会被交给Yeoman来完成。让我们来试试用Yeoman来创建一个AngularJS项目吧!...generator-angular会询问你需不需要使用Sass和/或者Bootstrap,使用’n'和’y'进行选择。 然后你需要选择你需要使用的Angular模块。...中实现返回前一页 http://blog.csdn.net/qianqianyixiao1/article/details/51146519 AngularJs返回前一页面时刷新一次前面页面 http:.../295067 简介AngularJS中使用factory和service的方法 http://www.xker.com/page/e2015/06/199141.html 使用Factory创建复制数据对象单例.../kf/201504/391807.html 七步从Angular.JS菜鸟到专家(3):数据绑定和AJAX http://blog.jobbole.com/48780/ 双向数据绑定---AngularJS
var app = angular.module('app', []); app.value('appVersion',"v.1.0.1"); 3.2 constant() 定义常量时候使用,定义的值不能进行修改...它和service的区别是,factory注入的是普通的function,而service注入的是一个构造函数constructor。因为它可以返回任何东西,所以在实际开发中使用的最多。...Angular规定provider必须返回一个$get方法。provider是value,service和factory的封装。...'); }); 说明:在配置这里,我们注入的registrationProvider而不是在provider方法里面定义的registration服务名称,这里其实是Angular本身通过做的一件事情。...它本身不是Provider,而是来装饰其他的provider的。而上面说过provider是value,service和factory的封装。
,组件才会进行检查,而不是仅仅是改变属性的值,或者增减对象的元素。...(前提是在元数据中设置了changeDetection: ChangeDetectionStrategy.OnPush) 在此设置基础下,想要启动策略,就需要返回新的对象和数组。...如Object.assign({}, {name:j_bleach}, {name:bleach}); 或者[…[1,2,3],4]这样返回一个新的对象。...而在本例中,通过reducer返回的是一个新的值(一般是一个新的对象),新的值变化也会引起组件检查。...高中英语水平翻译一下:async这个管道,会返回订阅的Observe ,promise对象的最新的值,当观察者发现值有改变时,就会触发组件的检查策略,并且在组件销毁时也会自动的去取消订阅避免内存泄漏。
领取专属 10元无门槛券
手把手带您无忧上云