昨天刚知道,原来把一个Promise绑定到Scope,View会自动显示该Promise的值(auto-unwarp),但是晚上回家试的时候发现,无论如何都不行。又浪费了两个多小时找原因,最后才发现,这个auto-unwrap的功能在AngularJs 1.2.0的某个RC之后就被禁用了。官方用词Deprecated,没有替代怎么叫deprecated呢?明明就是removed!

这是StackOverflow的提问:http://stackoverflow.com/questions/21193400/why-promise-in-factory-not-working-since-angularjs-1-2-0

这是Plnkr: http://plnkr.co/edit/w2O8Ci?p=preview

所以,下面代码里面的Promise已经不会自动绑定了,要让他工作正常,需要:

  NameFactory.getName().then(function(data){$scope.name = data});

代码:

<!DOCTYPE html>
<html ng-app="myApp"><head><!--<script src="http://code.angularjs.org/1.1.5/angular.min.js"></script>--><script src="http://code.angularjs.org/1.2.9/angular.min.js"></script><script>var app = angular.module('myApp', []);app.factory('NameFactory', function($http, $q) {return {getName: function() {var deferred = $q.defer();deferred.resolve({name: "World"});return deferred.promise;}}});app.controller("NameCtrl", function($scope, NameFactory) {$scope.name = NameFactory.getName();});</script>
</head><body ng-controller="NameCtrl"><h1>Hello, {{name.name}}</h1>
</body></html>

所以正确的做法是:

<!DOCTYPE html>
<html ng-app="myApp"><head><script src="http://code.angularjs.org/1.2.9/angular.min.js"></script><script>var app = angular.module('myApp', []);app.factory('NameFactory', function($http, $q) {return {getName: function() {var deferred = $q.defer();deferred.resolve({name: "World"});return deferred.promise;}}});app.controller("NameCtrl", function($scope, NameFactory) {NameFactory.getName().then(function(data){$scope.name = data;});});</script>
</head><body ng-controller="NameCtrl"><h1>Hello, {{name.name}}</h1>
</body></html>

转载于:https://www.cnblogs.com/puncha/p/3876855.html

AngularJs 抓狂之: $q promise 自动unwarp功能被禁用了相关推荐

  1. webstorm汉化怎样切回英文_虐心抓狂问题:webstorm使用搜狗输入法输入英文自动切换为中文...

    抓狂: 在webstrom中使用搜狗输入法编写代码时,按下shift键,切换到英文输入状态,想要输入helloworld单词,但是奇葩的现象出现了,没等输入完hello单词,输入法状态就自动切换到了中 ...

  2. angular $q promise详解

    前言 通过本文,你大概能清楚angular promise是个啥,$q又是个啥,以及怎么用它.这里咱们先灌输下promise的思想. 下面写的全是废话,一些看着高逼格其实没什么大作用的概念,想知道$q ...

  3. 抓狂的QQ离开自动回复

          QQ是我用过的所有IM中状态设置最复杂的:Q我吧.我在线上.离开.忙碌.静音.隐身-这其中,最让人抓狂的就是离开,离开的在每个消息后面跟一句自动回复的设计.              看看 ...

  4. QA发现的令人抓狂的BUG

    项目中的一个功能是自动生成文档.而自动生成文档的路径是由用户选择的.TEAM里的QA在测试这个功能时,遭遇了令他们抓狂的BUG. 测试过程很简单,运行程序,把生成文档的目标路径设置为桌面.生成. QA ...

  5. 如何写出让人抓狂的代码?

    前言 今天跟大家聊一个有趣的话题:如何写出让人抓狂的代码? 大家看到这个标题,第一印象觉得这篇文章可能是一篇水文.但我很负责的告诉你,它是一篇有很多干货的技术文. 曾几何时,你在阅读别人代码的时候,有 ...

  6. 综合抓狂类、Java技术类面试题

    Section1.综合抓狂类   如果现在有两家公司,一家每月给你3000,另外一家每月给你3500,你会怎样选择? 你为什么来应聘我们公司? 你对我们公司有什么认识? 你过去的上级是个什么样的人 ? ...

  7. 天涯上令人抓狂的100个神经签名(天涯疯人院语录)

    1.柏芝你走吧,我舍不得韩红! 2.按猪的审美观,我基本算得上是个帅哥~ 3.我不是你想象中的那么完美那么坚强,金钱和美女就足以把我征服! 4.见到我以后你会突然发现--原来帅也可以是这样的具体呀~ ...

  8. 哪些奇葩问题会让程序员抓狂?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 如何惹恼程序员?本文排个雷. 一. 作为一名程序员,很多事情会让自己心烦意乱,通常我都对其置 ...

  9. 【英语阅读】纽约时报 | 你妈注定让你抓狂

    Your Mom Is Destined to Annoy You 你妈注定让你抓狂 Destined adj.注定的;命定的;去往-的 v.注定 Annoy vt.骚扰;惹恼;打搅 n.烦恼 I h ...

最新文章

  1. flutter中的生命周期
  2. CAPSNET:具有自我注意路由的胶囊网络
  3. 统计学习方法笔记(九)-最大熵原理及python实现
  4. C 语言获取系统时间
  5. 3389爆破DUBrute_2.1
  6. NET平台4.0 发布网站流程及出错总结
  7. java des 加密 字符串_Java使用DES加密字符串
  8. 反向工程解析QQ扫码登录的OAuth2流程
  9. 餐厅点餐系统app总结
  10. 【深度学习】CNN算法
  11. LM2596降压DCDC芯片
  12. xpath获取同级元素 子元素,子元素取父元素等
  13. 贪心算法及其经典例题
  14. 苹果手机备份有必要吗_苹果手机备份最简单方式!原来大神都这样做
  15. linux下使用screen和ping命令对网络质量进行监控
  16. Python骚操作 | 川普的嘴,骗人的鬼!
  17. 用PowerPoint巧做特效字幕(转)
  18. matlab graythresh()函数使用的注意点
  19. 用让新海诚本人惊讶的 AI 模型制作属于你的动漫视频
  20. MySQL 不四舍五入取整、取小数、四舍五入取整、取小数、向下、向上取整

热门文章

  1. 利用stub技术进行单元测试
  2. CentOS7路由、端口和服务排障常用命令
  3. 为什么利用多个域名来存储网站资源会更有效?
  4. ELF 文件 动态链接 - 地址无关代码(GOT)
  5. According to TLD or attribute directive in tag file, attribute value does not accept any expressions
  6. CSS基本知识1-CSS基本概念
  7. MVC与Validate验证提示的样式修改
  8. hibernate 最新 jar 下载
  9. Django之Form组件
  10. 深入Oracle的left join中on和where的区别详解