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防止click双击多次提交及传递动态函数或多参数
Apr 02 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
May 17 Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 Javascript
详解JavaScript中this的指向问题
Jan 20 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
May 22 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 Javascript
vue实现单一筛选、删除筛选条件
Oct 26 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
Oct 29 Javascript
JavaScript对象访问器Getter及Setter原理解析
Dec 08 Javascript
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 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获取客户端电脑屏幕参数的方法
2015/01/09 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
Django权限机制实现代码详解
2018/02/05 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
python selenium 弹出框处理的实现
2019/02/26 Python
详解Python3 pickle模块用法
2019/09/16 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
CSS3制作日历实现代码
2012/01/21 HTML / CSS
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
高三自我评价
2014/02/01 职场文书
保险公司早会主持词
2014/03/22 职场文书
建筑工地宣传标语
2014/06/18 职场文书
师范生见习报告
2014/10/31 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
技术入股合作协议书
2016/03/21 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书