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 相关文章推荐
用js实现计算加载页面所用的时间
Apr 02 Javascript
dreamweaver 安装Jquery智能提示
Apr 02 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
Jun 01 Javascript
js调用百度地图及调用百度地图的搜索功能
Sep 07 Javascript
javascript给span标签赋值的方法
Nov 26 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
Dec 05 Javascript
websocket+node.js实现实时聊天系统问题咨询
May 17 Javascript
Vue keep-alive实践总结(推荐)
Aug 31 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
微信小程序模板template简单用法示例
Dec 04 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 Javascript
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
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
PHP中设置时区方法小结
2012/06/03 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
php文件上传类完整实例
2016/05/14 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
node网页分段渲染详解
2016/09/05 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
Python 正则表达式实现计算器功能
2017/04/29 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
Python新手学习raise用法
2020/06/03 Python
Python wordcloud库安装方法总结
2020/12/31 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
为什么需要版本控制?
2013/08/08 面试题
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
校庆口号
2014/06/20 职场文书
政风行风评议心得体会
2014/10/21 职场文书
优秀教研组申报材料
2014/12/26 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
React Fragment介绍与使用详解
2021/11/11 Javascript