AngularJS模板包含定义了额外的功能,对DOM元素行为的表达式,过滤器和指令。

1.了解模板

表达式:类似js的代码段。在作用域的上下文被求值。可以放置在普通的HTML文本或属性值中

<p>{{1+2}}</p>
<a href="/myPage.html/{{hash}}"></a>

过滤器:过滤器变换被放置在网页上的数据的外观。(如可以把作用域中的数值转换为货币字符或者时间字符串)

指令:新HTML元素名称或HTML元素中的属性的名称。添加和修改HTML元素的行为来为AngularJS应用程序提供数据绑定,事件处理etc.

<div>
<input ng-model="msg">
{{msg | uppercase}}
</div>

(ng-model="msg"属性是一个指令,<input>元素的值与作用域中的msg绑定。{{}}应用大写过滤器表达式)

1.2.使用表达式  

表达式是绑定到数据模型的(类似JavaScript表达式)

1)可以在表达式里使用作用域定义的属性名称和函数。

2)表达式被定义到作用域内,作用域中的数据变化时,表达式的值也会变化

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>AngularJS expressions</title>
<style type="text/css">
p{width: 400px;height: 40px;line-height: 40px;background-color: red;color: #fff;text-align: center;cursor: pointer;}
</style>
</head>
<body>
<div ng-controller="myController">
<h1>Expressions</h1>
{{'Bilbo'+'Baggins'}}<br/>
{{first}} {{last}}<br/>
{{combine(first,last)}}<br/>
<p ng-click="setName(newFirst,newLast)">
Click to change to {{newFirst}} {{newLast}}
</p>
<p ng-click="setName('Bilbo','Baggins')">
Click to change to Bilbo Baggins
</p>
<script type="text/javascript" src="angular-1.3.0.js"></script>
<script type="text/javascript" src="angular_expressions.js"></script>
</div>
</body>
</html>

使用表达式以各种方式从作用域获得数据的AngularJS模板

var myModule=angular.module('myApp', []);
myModule.controller('myController', function($scope){
$scope.first='Thorin';
$scope.last="Oakenshield";
$scope.newFirst="Gandalf";
$scope.newLast="Greyhame";
$scope.combine=function(fName,lName){
return fName+' '+lName;
}
$scope.setName=function(fName,lName){
$scope.first=fName;
$scope.last=lName;
}
})

1.3.使用过滤器  

过滤器是一种提供器

表达式内实现过滤器:{ {expression | filter }} {{ expression | filter | filter }} 

依赖注入添加过滤器:

controller('myController',['$scope','currencyFilter',function($scope,currencyFilter){
$scope.getCurrencyValue=function(value){
return currencyFilter(value,"$USD")
}
}])

可供AngularJS过滤器使用的作用域

var myModule=angular.module('myApp', []);
myModule.controller('myController', function($scope){
$scope.JSONObj={title:"myTitle"};
$scope.word="Supercalifreesdassfsaca";
$scope.days=['Monday','Tuesday','Wednesday','Thursday','Friday'];
});

实现不同类型的过滤器修改呈现在视图中显示的数据的AngularJS模板

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>AngularJS Filters</title>
</head>
<body>
<div ng-controller="myController">
<h2>Basic Filters</h2>
Number:{{123.4567|number:3}}<br/>
Currency:{{123.45678|currency:"$"}}<br/>
Date:{{1239321123112|date:'yyyy-MM-dd HH:mm:ss Z'}}<br/>
JSON:{{JSONObj|json}}<br/>
Limit Array:{{days|limitTo:3}}<br/>
Limit String:{{word|limitTo:10}}<br/>
Uppercase:{{word|uppercase|limitTo:10}}<br/>
Lowercase:{{word|lowercase|limitTo:10}}
</div>
<script type="text/javascript" src="angular-1.3.0.js"></script>
<script type="text/javascript" src="angular_filters.js"></script>
</body>
</html>

一个AngularJS模板,实现filter和orderBy过滤器来对表视图的条目进行排序和过滤

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>AngularJS Sorting and Filtering</title>
<style type="text/css">
table{max-width: 640px;min-width: 300px;text-align: center;}
td,th{padding:3px;}
</style>
</head>
<body>
<div ng-controller="myController">
<h2>Sorting and Filtering</h2>
<input type="text" placeholder="input sorting" ng-model="filterString">
<input type="button" ng-click="setFilter()" value="Filter">
<table>
<tr>
<th ng-click="setSort('make')">Make</th>
<th ng-click="setSort('model')">Model</th>
<th ng-click="setSort('mp')">MegaPixel</th>
</tr>
<tr ng-repeat="camera in filteredCameras | orderBy:column:reverse">
<td>{{camera.make}}</td>
<td>{{camera.model}}</td>
<td>{{camera.mp}}</td>
</tr>
</table>
</div>
<script type="text/javascript" src="angular-1.3.0.js"></script>
<script type="text/javascript" src="angular_filter_sort.js"></script>
</body>
</html>

建立了AngularJS可以使用的作用域,然后排序和过滤

var myModel=angular.module('myApp', []);
myModel.controller('myController', ['$scope','filterFilter', function($scope,filterFilter){
// 防止在排序和过滤时改变实际数据模型
$scope.cameras=[
{make:'Canon',model:'70D',mp:20.2},
{make:'Canon',model:'6D',mp:20},
{make:'Nikon',model:'D7100',mp:24.1},
{make:'Nikon',model:'D5200',mp:24.1}
];
$scope.filteredCameras=$scope.cameras;
$scope.reverse=true;//true表示升序
$scope.column='make';
$scope.setSort=function(column){
$scope.column=column;
$scope.reverse=!$scope.reverse;
};
$scope.filterString='';
$scope.setFilter=function(value){
// filterFilter提供器限制filteredCameras的条目是那些松散匹配filterString的条目
$scope.filteredCameras=filterFilter($scope.cameras,$scope.filterString);
}
}])

1.4.创建自定义过滤器

filter()方法创建过滤器提供器,并把它注册到依赖注入的服务器

filter('myFilter',function(){
return function(input,param1,param2){
return <<modified input>>
}
})

在AngularJS中实现自定义过滤器提供器

var myModule=angular.module('myApp', []);
myModule.filter('censor',function(){
return function(input,replacement){
var cwords=['bad','evil','dark'];
var out=input;
for(var i=0;i<cwords.length;i++){
out=out.replace(cwords[i],replacement);
}
return out;
}
});
// 依赖注入添加censorFilter提供器
myModule.controller('myController', ['$scope','censorFilter', function($scope,censorFilter){
$scope.phrase="This is a bad phrase";
$scope.txt="click to filter out dark and evil";
$scope.filterText=function(){
$scope.txt=censorFilter($scope.txt,"<<censord>>");
}
}])

使用自定义过滤器的AngularJS模板

<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>AngularJS Custom Filter</title>
</head>
<body>
<div ng-controller="myController">
<h2>Sorting and Filter</h2>
<p>This is a bad phrase</p>
{{phrase | censor:"***"}}<br/>
<p>This is some bad,dark evil text</p>
{{"This is some bad,dark evil text" | censor:"happy"}}<br/>
<p ng-click="filterText()">{{txt}}</p>
</div>
<script type="text/javascript" src="angular-1.3.0.js"></script>
<script type="text/javascript" src="angular_filter_customer.js"></script>
</body>
</html>

 

6.使用AngularJS模板来创建视图的更多相关文章

  1. Django创建模板、URL模式、创建视图函数

    1.在应用目录下创建模板(templates目录) 在模板目录下创建archive.html <!DOCTYPE html> <html lang="en"> ...

  2. 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组

    真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳 ...

  3. Angular系列---- AngularJS入门教程03:AngularJS 模板(转载)

    是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...

  4. Angular系列----AngularJS入门教程01:AngularJS模板 (转载)

    是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...

  5. AngularJS 模板

    一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模式解耦代码和分离关注点.考虑到这一点,我们用AngularJS来为我们的应用添加一些模型.视图和控制器 ...

  6. [转载]AngularJS入门教程02:AngularJS模板

    是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...

  7. 乡下人重拾MVC——创建视图

    1. 创建视图都不勾选:代表不使用任何模版,页面的代码即为运行后显示的内容 2.  创建分部视图 代表统会自动把View文件夹下名为“_ViewStart.cshtml”的内容添加到新建的html最上 ...

  8. django 创建视图和APP

    .创建视图views 1.在项目目录下创建views.py文件 2.from django.http import HttpResponse 3.在urls 导入模板: from django.con ...

  9. Knockout v3.4.0 中文版教程-2-监控-通过监控创建视图模型(上)

    2. 监控 1.通过监控创建视图模型 1. 监控 Knockout是基于以下三个核心特性: 监控和依赖跟踪 声明式绑定 模板 在本节,你将第一次了解这三个特性,在这之前,我们先来了解以下MVVM模式和 ...

随机推荐

  1. vim 使用总结

    VIM分屏显示   1 . 水平分屏split(sp) || 垂直分屏vsplit(vs) :(v)split 输入这样的命令后vi就会将当前的窗口平分为两个,并且在这两个窗口中显示的是同一篇文章.如 ...

  2. 枚举类型Enum

    包java.dataStructure中,文件名Enum_demo.java 在JDK5中引入了一个新的关键字——enum,可以直接定义枚举类型 在申明枚举类的时候,也可以申明属性.方法和构造函数,但 ...

  3. Android学习笔记——xml

    转自http://blog.csdn.net/sam_zhang1984 解析 XML 有两种方式: SAX 和 DOM .它们各有利弊. DOM 是把 XML 文档全部装载到内存中,然后当成一树进行 ...

  4. Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

       FastCGI编程包括四部分:初始化编码.接收请求循环.响应内容.响应结束循环. FCGX_Request request; FCGX_Init(); ); FCGX_InitRequest(& ...

  5. tomcat的文件路径 servelet的配置 以及maven中的WEB-INF的路径

    Tomcat JavaWeb应用的组成结构 开发JavaWeb应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错 WebRoot →Web应用所在 ...

  6. Python基础之【第三篇】

    dir(): 默认打印当前模块的所有属性,如果传一个对象参数则打印当前对象的变量名 vars() 默认打印当前模块的所有属性,如果传一个对象参数则打印当前对象的变量名和值 reload() 将以前导入 ...

  7. jsp系统时间和时间对比(活动结束不结束)

    jsp页面拿到系统时间 <jsp:useBean id="now" class="java.util.Date" /> <fmt:format ...

  8. shell编程中for file in $*; do是什么意思.

    $*是此行命令所在函数(脚本)的所有被传入参数的合集与$@类似,不用引号的情况下没有区别区别是当被""扩起来以后"$*"被当做一个字符串"$@&quo ...

  9. 贴上自己写的代码-jq隐藏事件

  10. html页面 代码 编写的 一些 基本素养 约定 知识点

    hmtl代码书写也要养成一段一段的 区块代码, 每个区块代码 进行 html的 功能注释 自由文字的获得: (lorem ipsum: 乱数假文, 哑元文字) lorem ipsum: lipsum等 ...