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 相关文章推荐
一段效率很高的for循环语句使用方法
Aug 13 Javascript
刷新页面实现方式总结(HTML,ASP,JS)
Nov 13 Javascript
Jquery 最近浏览过的商品的功能实现代码
May 14 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
Nov 30 Javascript
jQuery的slideToggle方法实例
May 07 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
Dec 04 Javascript
AngularJS中使用three.js的实例详解
Jul 21 Javascript
vue中如何让子组件修改父组件数据
Jun 14 Javascript
详解Vue取消eslint语法限制
Aug 04 Javascript
JavaScript运动原理基础知识详解
Apr 02 Javascript
小程序实现左滑删除的效果的实例代码
Oct 19 Javascript
js 实现验证码输入框示例详解
Sep 23 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
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
Javascript面向对象编程
2012/03/18 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
Python中的自省(反射)详解
2015/06/02 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
Python request post上传文件常见要点
2020/11/20 Python
广州迈达威.net面试题目
2012/03/10 面试题
酒吧创业计划书
2014/01/18 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
人事文员岗位职责
2015/02/04 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
Python 中 Shutil 模块详情
2021/11/11 Python