在学习笔记-AngularJs(五),通过引入bootstrap.css进行改写整个样式,这时学习项目也变得好看多了,现在我们又需要目录再进行一次改变,如下图:

这样就符合之前讲的对学习目录进行布置了!

angualrJs自带了一些默认的过滤器,如:

{{"xiaobin" | uppercase}}
{{"XIAOBIN" | lowercase}}
{{ | date:"yyyy-MM-dd"}}
{{ {"foo":"dddd","far":"ddddddd"} | join}}

现在我们来学一下怎么自定义过滤器,在js文件中添加filters.js,加入一下代码:

var phoneFilter = angular.module('phoneFilter', []);
phoneFilter.filter("checkHun",function(){ return function(input){ //input表示的是需要过滤的参数 return input ? '\u2718': '\u2713' ; //这里是对人物的婚姻状态进行判断要嘛打勾要嘛打叉 }; });

当然这里建立phoneFilter模块,同时需要在app.js进行依赖,随便对之后的服务、指令等进行,代码如下:

var phonecat = angular.module('phonecat',  ['ngRoute','phoneController','phoneFilter','phoneService','ngResource']);  //[....]依赖注入 

那在模板使用自定义的过滤器,可以这样使用:

{{phone.is_h | checkHun }} //当然需要在之前的phone.json再对应去添加一个is_h婚姻状态

对于angularJs也有事件处理器,都是通过ng-*的形式来触发写在controllers.js的控制器文件的,如:ng-click,ng-keydown等等!现在来看一下,对于之前phone-detail.html中,就只有怎么一句话:"这是phoneId为{{phoneId}}的详情页",十分简单,现在需要充实它,就拿一个大佬来看,结果就会变成这样http://t.cn/RUbL4rP

需要实现一个功能是点击相对应图片,对应上面的大图就会被替换成小图,可以使用ng-click来绑定一个函数实现这个功能,于是建立个1.json来储存数据,如下(内容可以自己去找):

{
"intro": "...",
"gaikuang": {
"name": "马云",
"n_name": "风清扬(阿里内部的花名)",
"birth":"1964年9月10日",
"y_name":"Jackma",
"from": "中华人民共和国",
"zuji":"汉族",
"birth_d": "浙江省杭州市"
}, "jian_intro" : "...", "beijing": " 企业家", "school": "杭州师范学院,获外语学士学位", "images":[
"image/yun.jpg",
"image/yun1.jpg",
"image/yun2.jpg",
"image/yun3.jpg" //图片可以自己找
], "others": { "jiguan":"浙江嵊州谷来镇,后父母移居杭州",
"xueli":"本科",
"xuexing":"o型",
"wife":"张英",
"xingzuo":"处女座" } }

我们可以使用之前讲过的那个$http服务来拉取数据,我需要实现的是从#/phones/{{phone.id}}中的phone.id来拉取数据,也就是id=1(可以怎么理解),还记得之前引入的ngRoute模块吗?它有个$routeParams服务,可以通过$routeParams.phoneId获取id了,那么就可以通过$http服务来获取了,控制器代码如下:

phoneController.controller("phone-detail-controller",["$scope",'$routeParams',"$http",function($scope,$routeParams,$http){  //注入$routeParams服务
$http.get("json/"+$routeParams.phoneId+".json").success(function(data, status, headers, config) {
if(status==){
$scope.people = data;
$scope.main_image = data.images[]; //需要初始化默认的大图
}
}).error(function() {
$scope.message = "获取不到此人的详细信息"
});
  //关键在这,事件处理器触发的函数
$scope.setImage=function(url){
$scope.main_image = url;
}
}]);

模板文件如下:

<div class="panel panel-primary">
<div class="panel-heading">人物简介</div>
<div class="panel-body">
<div class="row">
<div class="col-xs-4">
<div class="thumbnail col-xs-12">
<img ng-src="{{main_image}}" alt="">
</div>
<!--添加事件处理器的demo-->
<div ng-repeat="imgurl in people.images" class="thumbnail col-xs-3">
<img ng-src="{{imgurl}}" ng-click="setImage(imgurl);" alt="">
</div>
</div>
<div class="col-xs-8">
<table class="table">
<tr><td colspan="">{{people.gaikuang.name}}</td> </tr>
<tr>
<td>个人背景</td>
<td>职业:{{people.beijing}}</td>
<td>毕业院校:{{people.school}}</td>
</tr>
<tr>
<td>个人概况</td>
<td>中文名:{{people.gaikuang.name}} <br> 别名:{{people.gaikuang.n_name}} <br> 民族:{{people.gaikuang.zuji}} <br> 出生日期:{{people.gaikuang.birth}}</td>
<td>外文名:{{people.gaikuang.y_name}} <br> 国籍:{{people.gaikuang.form}} <br> 出生地:{{people.gaikuang.birth_d}}</td>
</tr>
<tr>
<td>其他信息</td>
<td> 籍贯:{{people.others.jiguan}} <br> 血型:{{people.others.xuexing}}</td>
<td> 学历:{{people.others.xueli}} <br> 妻子:{{people.others.wife}} <br> 星座:{{people.others.xingzuo}}</td>
</tr>
<tr><td colspan="">{{people.jian_intro}}</td></tr>
</table>
</div>
</div>
</div>
<div class="panel-footer">{{people.intro}}</div>
</div>

到此为止,事件处理器和过滤器的例子就如同上述所讲了!

学习笔记-AngularJs(六)的更多相关文章

  1. 学习笔记-AngularJs(七)

    在学习笔记-AngularJs(六)提及了事件处理器和过滤器以及它们的例子,而我们知道之前我是使用$http服务去获得我们需要的json数据,但是$http是比较底层的用法,有时候我们想把获取json ...

  2. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  3. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  4. VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表

    原文:VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表 Excel具有强大的图表显示.分析功能,这点毋庸置疑,但是如果将常规MIS系统中的数据以报表的形式在Excel中显示,却并不那 ...

  5. 获取编译学习笔记 (六)—— si、di,双环

    疯狂暑期学习  汇编入门学习笔记 (六)-- si.di,双重循环 參考: <汇编语言> 王爽 第7章 1. and和or指令,与[bx+idata] and和or.就不多说了. [bx+ ...

  6. Python学习笔记(六)

    Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...

  7. QML学习笔记(六)- 简单计时器和定时器

    做一个简单的qml计时器和定时器,左键触发计时,右键触发定时 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(六)- 简单计时器和定时器 左键点击按钮,触发计时器,中键可以暂停计时,同 ...

  8. 学习笔记-AngularJs(十)

    前面一直在说自定义指令,但是却一直没有一次系统地去了解,现在需要我们一起来学习如何去使用自定义指令,去丰富html标签.属性,实现多元化.多功能的标签(或是属性).辣么,啥是指令?要了解指令,首先需要 ...

  9. 学习笔记-AngularJs(九)

    到目前为止,我们所做的学习案例都是没有加任何动画效果的,对于以往来说,我们经常会去使用一些动画插件或是css框架(如:animate.css)来点缀我们的网页,这样显得生动,高大上,那么接下来我们可以 ...

随机推荐

  1. 封装sqlhelper【一】

    控件信息展示: //定义调用数据库类文件 namespace SqlHelper { public class TblClass { public int classId { get; set; } ...

  2. C++.构造函数(超出范围)_01

    环境:Win7x64.Qt5.3.2 MSVC2010 OpenGL.vs2010 1.ZC:在 构造函数 中,基类访问子类的成员 会报内存错误,如果访问的是 基本类型的话(如int) 可能还不会出错 ...

  3. git 命令详解

    初始化仓库 git init命令将目录初始化为一个仓库 git init 目录名 git 撤销commit git reset --hard <commit_id> git push or ...

  4. ubuntu 安装cuda 9.1 pytorch 0.3.0

    毕业再没用配过机器学习的环境了,既亲切又陌生,久违了. 系统 mint18  x64 1安装cuda 按官网提示 选的9.1版  https://developer.nvidia.com/cuda-t ...

  5. lua_call/lua_pcall/xpcall

    vs2013+lua5.3.3 1.涉及函数 主要C函数:lua_call和lua_pcall 主要lua函数xpcall 2.正常使用lua_call ①hello.lua文件内容 function ...

  6. 2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest

    2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest A Secret of Chocolate Poles 思路:暴力枚举黑巧克力的个数和厚黑巧克力的个 ...

  7. 量化投资的Python库——Tushare

    本来想用python自带的help命令和dir命令,来写一个关于Tushare库的使用手册呢,但是后来发现了Tushare的官方网站, ̄□ ̄||,网址如下: http://tushare.org/ 把 ...

  8. Within K stops 最短路径 Cheapest Flights Within K Stops

    2018-09-19 22:34:28 问题描述: 问题求解: 本题是典型的最短路径的扩展题,可以使用Bellman Ford算法进行求解,需要注意的是在Bellman Ford算法的时候需要额外申请 ...

  9. 雷林鹏分享:jQuery EasyUI 表单 - 创建异步提交表单

    jQuery EasyUI 表单 - 创建异步提交表单 本教程向您展示如何通过 easyui 提交一个表单(Form).我们创建一个带有 name.email 和 phone 字段的表单.通过使用 e ...

  10. EntityFramework4.5使用Expression类创建动态查询及动态查询导航属性

    创建动态查询 想在项目中实现一个灵活的动态查询类,参考http://www.cnblogs.com/lyj/archive/2008/03/25/1122157.html和http://www.cnb ...