angularjs提供的$q服务是对Promises规范的一个实现。$q服务可以把一段异步的代码封装成同步的样式。 为啥是样式,因为异步还是异步,它并不会柱塞代码,只是看起来像同步代码。...通常Ajax请求都是异步的,通过success,failed回掉来处理结果。通过$q服务我们可以把这个ajax请求改写成promise的形式。...其实把ajax请求改写成promise并不能体现$q的威力。 改写后代码跟原来的代码没有太大的差别。...其实$http服务本身就是通过$q来实现的promise,所以当你使用$q来做ajax的时候已经非常promise了。...$q最大的好处我觉得在于$q.all方法,它可以等待多个promise完成之后在执行相应的代码,下回分享。
一、什么是Promise Promise是对象,代表了一个函数最终可能的返回值或抛出的异常,就是用来异步处理值的。...二、为什么使用Promise 有了Promise对象,就可以把异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供了统一的接口,使得控制异步操作更加容易。...; } } }]) }); 讲一下$q服务 q服务是AngularJS中自己封装实现的一种Promise实现。...2.deffered 对象属性 promise :最后返回的是一个新的deferred对象 promise 属性,而不是原来的deferred对象。...这个新的Promise对象只能观察原来Promise对象的状态,而无法修改deferred对象的内在状态可以防止任务状态被外部修改。
先说说什么是Promise,什么是$q吧。Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered。...但是有了Promise这种规范,它能帮助开发者用同步的方式,编写异步的代码,比如在AngularJS中可以使用这种方式: deferABC.resolve(xxx) .then(funcSuccess(...小白让舍友带饭() .then(韭菜鸡蛋,西红柿炒鸡蛋) .finally(带包烟) $q服务 q服务是AngularJS中自己封装实现的一种Promise实现,相对与Kris Kwal's Q要轻量级的多...,返回一个promise对象 when() 传入一个不确定的参数,如果符合Promise标准,就返回一个promise对象。...all()方法 这个all()方法,可以把多个primise的数组合并成一个。当所有的promise执行成功后,会执行后面的回调。回调中的参数,是每个promise执行的结果。
AngularJS简介 AngularJS是一个JavaScript框架,用js编写的库 AngularJS表达式 AngularJS 使用 表达式 把数据绑定到 HTML 使用{ { 表达式 }}进行数据的输出 表达式可以包含字符,操作符,变量 表达式可以写在HTML中 不支持条件判断,...AngularJS HTML DOM AngularJS 为 HTML DOM 元素的 属性 提供了绑定应用数据的指令。...AngularJS 输入验证 form的name.input的name....AngularJS 路由通过 #! + 标记 区分不同的逻辑页面并将不同的页面绑定到对应的控制器上。 创建了两个 URL: /first 和 /second。每个 URL 都有对应的视图和控制器。
怀着激动与忐忑的心情,开始了学习AngularJS的旅程,很久之前就听说了这个前端框架,但是由于自己一直没有从事相关的工作,因此也没有进行学习。...这次正好学习AngularJS,直接复习一下前端的知识。目前这里还是弱点,慢慢深入的学习。 AngularJS是Google的优秀的前端框架,目前已经应用于多个产品。 ...AngularJs相对于其他的框架来说,有一下的特性: 1 MVVM 2 模块化 3 自动化双向数据绑定 4 语义化标签 5 依赖注入 由于很多概念都不了解,这些特性也无法理解。...通过简单的学习,大致了解了AngularJS的语法以及使用,包括如下的内容: 1 表达式 支持普通的JS表达式,表达式通过{{}}使用。...: {{ firstName }} ng-app 定义AngularJS的应用程序 ng-init 初始化应用程序变量 ng-model 获取程序变量 ng-bind
前一篇了解了AngularJS的一些简单的使用,这里继续跟着w3c学习一下剩下的内容。 ...本篇根据w3cschool.cc继续学习AngularJS剩余的内容,包括: 1 事件 2 模块 3 表单 4 数据验证 5 bootstrap CSS风格 6 include包含其他页面...初始的时候myVar的值为false,因此并不隐藏,每次点击myVar都会改变为相反的值,达到现实隐藏的效果。...$scope.myVar; }; } 关于AngularJS的模块 模块定义了用户的应用,所有的控制器属于一个模块。之前使用的ng-app就是模块的定义。 ...关于AngularJS表单 表单是web中重要的组成部分,如下面样例所示,可以很方便的获取到form中的数据 <div ng-app="" ng-controller="formController
1.scope 与 rootScope scope:单个controller的作用域。...可以直接在某controller下的页面引用scope下的变量 rootScope:多个controller作用域的桥梁。...可以直接在全局页面引用rootScope下的变量 举例: $rootScope.name = '小明'; $scope.name = '小明';//和$rootScope同名可以使用$root 的tab页打开就失效了。localStorage不会。 localStorage:不主动清除,不会失效。
我们可以将传给then函数和新Promise的resolve一起push到前一个Promise的callbacks数组中,达到承前启后的效果: 承前:当前一个Promise完成后,调用其resolve变更状态...如果返回的结果是个Promise,则需要等它完成之后再出发新Promise的resolve,所以可在其结果的then里调用新Promise的resolve then(onFulfilled, onReject...接收一个Promise实例的数组或具有Iterator接口的对象作为参数 这个方法返回一个新的Promise对象 遍历传入的参数,用Promise.resolve()将参数“包一层”,使其变成一个Promise...该方法的参数是Promise实例数组,然后其then注册的回调方法是数组中的某一个Promise的状态变为fufilled的时候执行。...因为Promise的状态只能改变一次,那么我们只需要把Promise.race中产生的Promise对象的resolve,注入到数组中的每一个Promise实例中的回调函数即可。
type="text/javascript" src="angular-route.min.js"> //在模块中的[...//:num获取传递过来的参数 .when('/aaa/:num',{ template : '首页的内容`name`', controller : 'one'...}) .when('/bbb',{ template : '分页一的内容`name`', controller : 'two' }) .when('/ccc.../:num',{ template : '分页二的内容`name`', controller : 'three' }) //设置默认值 .otherwise(...$location=$location; //可以获取传递过来的参数 console.log($routeParams); }]); myApp.controller('two'
完整的指令内容可以参阅 AngularJS 参考手册。...AngularJS 模块让所有函数的作用域在该模块下,避免了该问题。 ---- 什么时候载入库? 在我们的实例中,所有 AngularJS 库都在 HTML 文档的头部载入。...在我们的多个 AngularJS 实例中,您将看到 AngularJS 库是在文档的 区域被加载。...在我们的实例中,AngularJS 在 元素中被加载,因为对 angular.module 的调用只能在库加载完成后才能进行。...另一个解决方案是在 元素中加载 AngularJS 库,但是必须放置在您的 AngularJS 脚本前面: AngularJS 实例 <!
$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。...$http AngularJS $http 是一个用于读取web服务器上数据的服务。...$http.get(url) 是用于读取服务器数据的函数。 废弃声明 (v1.5) v1.5 中$http 的 success 和 error 方法已废弃。使用 then 方法替代。...get 请求是本站的服务器,你不能直接拷贝到你本地运行,会存在跨域问题,解决办法就是将 Customers_JSON.php 的数据拷贝到你自己的服务器上,附:PHP Ajax 跨域问题最佳解决方案。...AngularJS 应用通过 ng-app 定义。应用在 中执行。 ng-controller 指令设置了 controller 对象 名。
angularjs内置了常用的表单验证指令,比如min,require等。下面是演示: 的。
AngularJs是不直接操作DOM的,但是在平时的开发当中,我们有的时候还是需要操作一些DOM的,如果使用原生的JS的话操作过于麻烦,所以大家一般都是使用jQuery,jQuery虽然好用,但是AngularJs...是不建议和JQuery同时使用的,所以AngularJs给我们也提供了一些操作DOM的方法———Jqlite 查阅官方提供的api,可以看到使用方法是angular.element(ele)...②、querySelectorAll返回匹配的元素集合,如果没有匹配项,返回空的nodelist(节点数组)。 ③、返回的结果是静态的,之后对document结构的改变不会影响到之前取到的结果。 ...DOCTYPE html> AngularJS入门学习 AngularJS入门学习</title
序言 不同项目下lib里的promise/deferred往往是差异化最多的,用起来和自己的习惯相比经常是缺胳膊少腿多屁眼有卵用,因此聊聊标准的Promise的啥样的 不同的Promise差异基本表现如下.../A Promises/A+ Promises/A+兼容扩展Promises/A而来,es6里的Promise准守Promises/A+规范,也是当今的标准规范。...标准的Promise 构造 : new Promise(function(resolve, reject) {}) 静态方法 : Promise.all(iterable) Promise.race(iterable...不标准的使用 构造Promise对象: new Promise().resolve() ( 请使用new Promise(function(resolve, reject) {}) ) .done()...支持标准es6 promise规范 npm promise 支持标准es6规范,增加了done()等方法 npm node-promise 支持标准es6规范,增加了更多的工具方法,人气不如npm promise
最近在开发过程中,发现一个问题,在使用angularjs的ng-repeat遍历过程中,如果遍历的数组中包含相同的项,则会抛错。 如下例: <!...Repeater: item in ages, Duplicate key: number:25, Duplicate value: 25 解决方案:在对应的ng-repeat指令中增加
大漠老师的路由理解 ---- 首先新建一个基础的html,其中有些内容是固定的,固定的内容的可以有如home的超链接, 有些是可以插入模板如含有ui-view...的div 如果是home页面,只要加入home页面的模板即可如下 $stateProvider .state('home',... templateUrl: 'tpls2/home.html' }) 如进入home页面后还有子页面,即在home页面某处点击进入子页面,以list为例:在home模板的页面上也有些固定的内容...,也有可插入模板的div,home模板的链接要写成 List...home-list模板 关于about页面,about模板,about模板里面又含有左列和右列的模板,当about模板及内嵌的左列和又列的模板都加进去后才是一个完整的about页面 .state
当Promise从进行中状态转变为已完成或已失败状态时,称为Promise被"解决"(resolved)。Promise对象具有以下特点:Promise是不可变的,一旦状态被解决,就不能再改变。...Promise具有链式调用的能力,可以通过.then()方法添加处理已完成状态的回调,通过.catch()方法添加处理已失败状态的回调。...示例用法让我们通过示例来理解Promise的使用。...在Promise的执行器函数中,我们模拟了一个异步操作,使用setTimeout延迟2秒来模拟异步获取数据。...通过Promise的链式调用,我们可以更加优雅地处理异步操作的结果,并避免了回调地狱的问题。
---- AngularJS 全局 API AngularJS 全局 API 用于执行常见任务的 JavaScript 函数集合,如: 比较对象 迭代对象 转换对象 全局 API 函数使用 angular...以下列出了一些通用的 API 函数: API 描述 angular.lowercase (<angular1.7)angular....$$uppercase()(angular1.7+) 转换字符串为大写 angular.isString() 判断给定的对象是否为字符串,如果是返回 true。...angular.isNumber() 判断给定的对象是否为数字,如果是返回 true。...注意:自 AngularJS 1.7 之后移除 angular.lowercase 和 angular.uppercase 方法, 改为 angular.$$lowercase 和 angular.
领取专属 10元无门槛券
手把手带您无忧上云