AngularJS入门教程之链接与图片模板详解


Posted in Javascript onAugust 19, 2016

这一步,你会为手机列表的手机添加缩略图以及一些链接,不过这些链接还不会起作用。接下来你会使用这些链接来分类显示手机的额外信息。

请重置工作目录:

git checkout -f step-6

现在你应该能够看到列表里面手机的图片和链接了。

步骤5和步骤6之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。

数据

注意到现在phones.json文件包含了唯一标识符和每一部手机的图像链接。这些url现在指向app/img/phones/目录。

app/phones/phones.json(样例片段)

[
 {
 ...
 "id": "motorola-defy-with-motoblur",
 "imageUrl": "img/phones/motorola-defy-with-motoblur.0.jpg",
 "name": "Motorola DEFY\u2122 with MOTOBLUR\u2122",
 ...
 },
...
]

模板

app/index.html

...
    <ul class="phones">
     <li ng-repeat="phone in phones | filter:query | orderBy:orderProp" class="thumbnail">
      <a href="#/phones/{{phone.id}}" class="thumb"><img ng-src="{{phone.imageUrl}}"></a>
      <a href="#/phones/{{phone.id}}">{{phone.name}}</a>
      <p>{{phone.snippet}}</p>
     </li>
    </ul>
...

这些链接将来会指向每一部电话的详细信息页。不过现在为了产生这些链接,我们在href属性里面使用我们早已熟悉的双括号数据绑定。在步骤2,我们添加了{{phone.name}}绑定作为元素内容。在这一步,我们在元素属性中使用{{phone.id}}绑定。

我们同样为每条记录添加手机图片,只需要使用ngSrc指令代替<img>的src属性标签就可以了。如果我们仅仅用一个正常src属性来进行绑定(<img class="diagram" src="{{phone.imageUrl}}">),浏览器会把AngularJS的{{ 表达式 }}标记直接进行字面解释,并且发起一个向非法urlhttp://localhost:8000/app/{{phone.imageUrl}}的请求。因为浏览器载入页面时,同时也会请求载入图片,AngularJS在页面载入完毕时才开始编译——浏览器请求载入图片时{{phone.imageUrl}}还没得到编译!有了这个ngSrc指令会避免产生这种情况,使用ngSrc指令防止浏览器产生一个指向非法地址的请求。

测试

test/e2e/scenarios.js

...
  it('should render phone specific links', function() {
   input('query').enter('nexus');
   element('.phones li a').click();
   expect(browser().location().url()).toBe('/phones/nexus-s');
  });
...

我们添加了一个新的端到端测试来验证应用为手机视图产生了正确的链接,上面就是我们的实现。

你现在可以刷新你的浏览器,并且用端到端测试器来观察测试的运行,或者你可以在AngularJS服务器上运行它们。

练习

将ng-src指令换成普通的src属性。用像Firebug,Chrome Web Inspector这样的工具,或者直接去看服务器的访问日志,你会发现你的应用向/app/%7B%7Bphone.imageUrl%7D%7D(或者/app/{{phone.imageUrl}})发送了一个非法请求。

这个问题是由于浏览器会在遇到img标签的时候立刻向还未得到编译的URL地址发送一个请求,AngularJS只有在页面载入完毕后才开始编译表达式从而得到正确的图片URL地址。

总结

如今你已经添加了手机图片和链接,转到步骤7,我们将学习AngularJS的布局模板以及AngularJS是如何轻易地为应用提供多重视图。

 以上就是对AngularJS 链接与图片模版的资料整理,后续继续补充相关知识,谢谢大家对本站的支持!

Javascript 相关文章推荐
利用javascript/jquery对上传文件格式过滤的方法
Jul 25 Javascript
JS禁用浏览器退格键实现思路及代码
Oct 29 Javascript
10个JavaScript中易犯小错误
Feb 14 Javascript
javascript关于继承解析
May 10 Javascript
AngularJS上拉加载问题解决方法
May 23 Javascript
基于zepto.js简单实现上传图片
Jun 21 Javascript
javascript中一些奇葩的日期换算方法总结
Nov 14 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
JavaScript计算出两个数的差值
Mar 19 Javascript
vue项目中使用bpmn为节点添加颜色的方法
Apr 30 Javascript
超详细小程序定位地图模块全系列开发教学
Nov 24 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
AngularJS之依赖注入模拟实现
Aug 19 #Javascript
AngularJS入门教程之XHR和依赖注入详解
Aug 18 #Javascript
JavaScript中函数声明与函数表达式的区别详解
Aug 18 #Javascript
Javascript中apply、call、bind的巧妙使用
Aug 18 #Javascript
AngularJS入门教程之双向绑定详解
Aug 18 #Javascript
AngularJS入门教程之迭代器过滤详解
Aug 18 #Javascript
AngularJS入门教程之AngularJS 模板
Aug 18 #Javascript
You might like
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
vue实现搜索功能
2019/05/28 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
为python设置socket代理的方法
2015/01/14 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Django实现学员管理系统
2019/02/26 Python
谈谈Python中的while循环语句
2019/03/10 Python
如何通过命令行进入python
2020/07/06 Python
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
女子职高个人自荐书
2014/02/01 职场文书
消防安全汇报材料
2014/02/08 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
便利店促销方案
2014/02/20 职场文书
明星员工获奖感言
2014/08/14 职场文书
承兑汇票延期证明
2015/06/23 职场文书
获奖感言怎么写
2015/07/31 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
新手初学Java List 接口
2021/07/07 Java/Android