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层次选择器选择元素使用介绍
Apr 18 Javascript
使用JavaScript开发IE浏览器本地插件实例
Feb 18 Javascript
jquery实现简单的banner轮播效果【实例】
Mar 30 Javascript
Javascript设计模式之装饰者模式详解篇
Jan 17 Javascript
js实现彩色条纹滚动条效果
Mar 15 Javascript
微信小程序 支付后台java实现实例
May 09 Javascript
详解Vue如何支持JSX语法
Nov 10 Javascript
js 图片转base64的方式(两种)
Apr 24 Javascript
JS中判断字符串存在和非空的方法
Sep 12 Javascript
微信小程序实现签到功能
Oct 31 Javascript
基于JavaScript 实现拖放功能
Sep 12 Javascript
解决Layui数据表格的宽高问题
Sep 28 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 iconv() : Detected an illegal character in input string
2010/12/05 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
详解vue中组件参数
2018/07/09 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
如何用python整理附件
2018/05/13 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
浅谈python 类方法/静态方法
2020/09/18 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
期末评语大全
2014/05/04 职场文书
公证委托书格式
2014/09/13 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
Python jiaba库的使用详解
2021/11/23 Python
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技