AngularJS 入门教程之事件处理器详解


Posted in Javascript onAugust 19, 2016

在这一步,你会在手机详细信息页面让手机图片可以点击。

请重置工作目录:

git checkout -f step-10

手机详细信息视图展示了一幅当前手机的大号图片,以及几个小一点的缩略图。如果用户点击缩略图就能把那张大的替换成自己那就更好了。现在我们来看看如何用AngularJS来实现它。

步骤9和步骤10之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。

控制器

app/js/controllers.js

...
function PhoneDetailCtrl($scope, $routeParams, $http) {
 $http.get('phones/' + $routeParams.phoneId + '.json').success(function(data) {
 $scope.phone = data;
 $scope.mainImageUrl = data.images[0];
 });

 $scope.setImage = function(imageUrl) {
 $scope.mainImageUrl = imageUrl;
 }
}

//PhoneDetailCtrl.$inject = ['$scope', '$routeParams', '$http'];

在PhoneDetailCtrl控制器中,我们创建了mainImageUrl模型属性,并且把它的默认值设为第一个手机图片的URL。

模板

app/partials/phone-detail.html

<img ng-src="{{mainImageUrl}}" class="phone">

...

<ul class="phone-thumbs">
 <li ng-repeat="img in phone.images">
 <img ng-src="{{img}}" ng-click="setImage(img)">
 </li>
</ul>
...

我们把大图片的ngSrc指令绑定到mainImageUrl属性上。

同时我们注册一个ngClick处理器到缩略图上。当一个用户点击缩略图的任意一个时,这个处理器会使用setImage事件处理函数来把mainImageUrl属性设置成选定缩略图的URL。

测试

为了验证这个新特性,我们添加了两个端到端测试。一个验证主图片被默认设置成第一个手机图片。第二个测试点击几个缩略图并且验证主图片随之合理的变化。

test/e2e/scenarios.js

...
 describe('Phone detail view', function() {

...

 it('should display the first phone image as the main phone image', function() {
  expect(element('img.phone').attr('src')).toBe('img/phones/nexus-s.0.jpg');
 });

 it('should swap main image if a thumbnail image is clicked on', function() {
  element('.phone-thumbs li:nth-child(3) img').click();
  expect(element('img.phone').attr('src')).toBe('img/phones/nexus-s.2.jpg');

  element('.phone-thumbs li:nth-child(1) img').click();
  expect(element('img.phone').attr('src')).toBe('img/phones/nexus-s.0.jpg');
 });
 });
});

你现在可以刷新你的浏览器,然后重新跑一遍端到端测试,或者你可以在AngularJS的服务器上运行一下。

练习

为PhoneDetailCtrl添加一个新的控制器方法:

$scope.hello = function(name) {
  alert('Hello ' + (name || 'world') + '!');
 }

并且添加:

 <button ng-click="hello('Elmo')">Hello</button>

phone-details.html模板。

总结

现在图片浏览器已经做好了,我们已经为步骤11(最后一步啦!)做好了准备,我们会学习用一种更加优雅的方式来获取数据。

以上就是AngularJS 事件处理器的资料整理,后续继续补充,谢谢大家对本站的支持!

Javascript 相关文章推荐
JS 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
最新28个很棒的jQuery 教程
May 28 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
Apr 12 Javascript
gridpanel动态加载数据的实例代码
Jul 18 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
Webpack 实现 Node.js 代码热替换
Oct 22 Javascript
Bootstrap布局之栅格系统详解
Jun 13 Javascript
EditPlus中的正则表达式 实战(4)
Dec 15 Javascript
validationEngine 表单验证插件使用实例代码
Jun 15 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
vue用BMap百度地图实现即时搜索功能
Sep 26 Javascript
vue前端工程的搭建
Mar 31 Vue.js
jQuery增加、删除及修改select option的方法
Aug 19 #Javascript
浅谈jquery设置和获得checkbox选中的问题
Aug 19 #Javascript
AngularJS入门教程之过滤器详解
Aug 19 #Javascript
js判断checkbox是否选中个数的方法(超简单)
Aug 19 #Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 #Javascript
js仿腾讯QQ的web登陆界面
Aug 19 #Javascript
基于WebUploader的文件上传js插件
Aug 19 #Javascript
You might like
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
js实现秒表计时器
2019/12/16 Javascript
如何在python中使用selenium的示例
2017/12/26 Python
Django工程的分层结构详解
2019/07/18 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
汽车检测与维修专业求职信
2013/10/30 职场文书
大学生求职推荐信
2013/11/27 职场文书
应届本科生推荐信范文
2013/12/25 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
安全责任书
2015/01/29 职场文书
中班下学期个人总结
2015/02/12 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
立案决定书范文
2015/06/24 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书