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 相关文章推荐
JQuery 操作Javascript对象和数组的工具函数小结
Jan 22 Javascript
javascript 通用loading动画效果实例代码
Jan 14 Javascript
jQuery弹出框代码封装DialogHelper
Jan 30 Javascript
jquery实现翻动fadeIn显示的方法
Mar 05 Javascript
jQuery插件开发汇总
May 15 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
jQuery实现广告条滚动效果
Aug 22 jQuery
微信小程序使用npm支持踩坑
Nov 07 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
Vue.js 无限滚动列表性能优化方案
Dec 02 Javascript
uni-app如何页面传参数的几种方法总结
Apr 28 Javascript
JS实现联想、自动补齐国家或地区名称的功能
Jul 07 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,ajax实现分页
2008/03/27 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
微信支付开发交易通知实例
2016/07/12 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
css配合jquery美化 select
2013/11/29 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
django中间键重定向实例方法
2019/11/10 Python
解决Django no such table: django_session的问题
2020/04/07 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
毕业生就业推荐信范文
2013/12/01 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
大学生求职信例文
2014/06/29 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
python 爬取华为应用市场评论
2021/05/29 Python