angular 表达式与指令
angular表达式的一些特点
- 属性表达式:
- 属性表达式是对应于当前作用域,Javascript对应的是全局window对象。
- AngularJS要使用window作用域的话得用$window来指向全局window对象。 比如说,你使用window中定义的alert()方法,在AngularJS表达式中必须写成$window.alert()才行
- 允许未定义值
- 执行表达式时,AngularJS能够允许undefined或者null,不像Javascript会抛出一个异常
- 不能在AngularJS表达式中使用“条件判断”、“循环”、“抛出异常”等控制结构。
- 通过过滤器链来传递表达式的结果。例如将日期对象转变成指定的阅读友好的格式。
如:{{1+2}}
filter
过滤器就是用来过滤变量值,支持链式的写法如下:
{{ expression | filterName : parameter1 : ...parameterN }}
内建的9种过滤器
currency,date,filter,json,limitTo,lowercase,number,orderBy,uppercase
{{ 12.0 | currency:"USD$" }}
{{12.9 | currency | number:0 }}
{{ 1304375948024 | date }}
{{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}
{{ "lower cap string" | uppercase }}
{{ {foo: "bar", baz: 23} | json }}
ng-repeat="phone in phones | filter:query | orderBy:orderProp"
filter xxx, 可以根据网页中输入的xxx值进行过滤和, 增强了页面的交互效果
orderBy 过滤 器以一个数组作为输入,复制一份副本,然后把副本重排序再输出到迭代器
自定义过滤器
只需要通过app.filter定义需要的filter即可。
var app = angular.module('myapp', []);
app.filter('filter3',function(){
return function(items){
angular.forEach(items,function(item){
item = item + '!'
});
return items;
}
});
ng指令
以下用不同的方式匹配到ngBind指令
<span ng:bind="name"> angular
<span ng_bind="name"> angular
<span ng-bind="name"> angular
<span data-ng-bind="name"> angular
<span x-ng-bind="name"> angular
Angular内部提供的指令基本都能匹配属性名,标签名,注释,或者类名, 如:
<my-dir></my-dir>
<span my-dir="exp"></span>
<!-- directive: my-dir exp -->
<span class="my-dir: exp;"></span>
自定制指令
//html
<div ng-controller="Ctrl">
<my-customer customer="naomi"></my-customer>
</div> //js
var app = angular.module('testTpl', []); app.controller('Ctrl', function($scope) {
$scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' };
$scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' };
});
app.directive('myCustomer', function() {
return {
transclude: true,
restrict: 'ACE',
templateUrl: 'my-customer.html',
scope: {
customer: '='
},
controller: function() {
return {
openApi: function() { console.log('api init'); }
}
}
};
});
app.directive('myCustomer1', function() {
return {
transclude: true,
restrict: 'ACE',
require: '^myCustomer',
templateUrl: 'my-customer.html',
scope: {
customer: '='
},
link: function(scope, element, attrs, myCustomer) {
//因为使用了require, 会多增加一个参数myCustomer来调用myCustomer指令控制器开放的API
}
};
});
// my-customer.html
Name: {{customer.name}} Address: {{customer.address}}
<hr>
Name: {{vojta.name}} Address: {{vojta.address}}
- restrict: 代表匹配指令的模式, 'A' 仅匹配属性名字 , 'E' 仅匹配元素名字, ‘C’ 仅匹配类名
- scope: 可以用来隔离了除了你添加到作用域以外的其他数据模型。
- transclude: 允许内部模块使用外部作用域。 在templateUrl对应的模块中使用ng-transclude,指令可以将外部作用域的模版作为内部的嵌套模板,类似freemarker的nested
- controller: 可以开发API给其它指令使用, 完成指令之间的通信
require: '^'前缀意味着指令在它的父元素上面搜索控制器, 默认会在自身的元素上面搜索指定的指令
常用的内置指令
- ng-app
- ng-repeat
- ng-controller
- ng-bind-template
- ng-model
- 完成双向绑定的基础
- ng-src
- AngularJS在页面载入完毕时才开始编译, ngSrc指令会避免当浏览器载入时请求图片地址未解析导致的错误
- ng-view
- $route服务通常和ngView指令一起使用。ngView指令的角色是为当前路由把对应的视图模板载入到布局模板中
- ng-click
- ng-init
- ng-class
参考
- http://www.html-js.com/article/AngularJS-tips-about-AngularJS-filter
- http://angularjs.cn/A00s
- http://www.html-js.com/article/1561
angular 表达式与指令的更多相关文章
- angularJS表达式和指令
主要是描述angularJS如何扩展html的:(模型后面会涉及) 例子1:通过指令来扩展html <body ng-app="myapp"> <!-- ng ...
- Angular.js之指令学习笔记
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...
- angular内置指令相关知识
原文地址 https://www.jianshu.com/p/5a5b43a8e91f 大纲 1.angular指令的分类 2.angular指令之——组件 3.angular指令之——属性指令 (n ...
- Angular内置指令(二)
目录: $rootScope,ng-app,.run(),ng-include,ng-repeat,ng-if,ng-switch,ng-init ng-show/ng-hide,ng-model,n ...
- Angular内置指令(一)
要注意的是不要把自己开发的指令以ng开头,以免与内置指令冲突 目录:ng-disabled,ng-readonly,ng-checked,ng-selected,ng-href,ng-src,ng- ...
- angularjs学习总结一(表达式、指令、模型)
一:自执行匿名函数 (function(){ /*code*/})();自执行匿名函数:常见格式:(function() { /* code */ })();解释:包围函数(function(){}) ...
- 秒味课堂Angular js笔记------指令
1.属性指令 angularjs样式相关指令: ng-class ng-style ng-href ng-src ng-attr-(suffix) ng-bind ng-cloak 没解析完之前标签 ...
- Angular内置指令
记录一下工作中使用到的一些AngularJS内置指令 内置指令:所有的内置指令的前缀都为ng,不建议自定义指令使用该前缀,以免冲突 1. ng-model 使用ng-model实现双向绑定,通过表单的 ...
- angular中重要指令介绍($eval,$parse和$compile)
在angular的服务中,有一些服务你不得不去了解,因为他可以说是ng的核心,而今天,我要介绍的就是ng的两个核心服务,$parse和$compile.其实这两个服务讲的人已经很多了,但是100个读者 ...
随机推荐
- chown 命令详解
chown 作用:改变某个文件或目录的所有者和所属的组, 该命令可以向某个用户授权,使该用户编程指定文件的所有者或者改变文件的所属组, 用户可以是用户或者是用户ID, 用户组可以是组名或者租ID, ...
- Linux第六节随笔 输入输出重定向 、管道、通配符、wc / grep / tr / sort / cut / which /whereis /locate /find /
三期第五讲 -高级文件管理1.输入输出重定向 ls -l /dev/stdin -> /proc/self/fd/0 标准输入 设备:键盘 标记:0 ls -l /dev/stdout -> ...
- 2、各种折腾,安装交叉环境的gcc和qt,测试c++和qt程序
本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.安装gcc和qt 把光盘里带的gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX2 ...
- Linux目录结构详解
/: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls ...
- python3.5 + PyQt5 +Eric6 实现的一个计算器
目前可以实现简单的计算.计算前请重置,设计的时候默认数字是0,学了半天就做出来个这么个结果,bug不少. python3.5 + PyQt5 +Eric6 在windows7 32位系统可以完美运行 ...
- Sql Server中的nvarchar(n)和varchar(n)
刚才有幸看了下 nvarchar(n)和varchar(n),感觉以前的认知有误. nvarchar(n):n指的是字符个数,范围是1-4000,存储的是可变长度的Unicode字符数据. 按字符存储 ...
- php中const与define的区别
1 版本差异: const 要求php的版本>5.3.0 define 可以兼容php4,php5 等版本 2 定义的位置区别: const关键字定义的常量是在编译时定义的,因此const关键字 ...
- 队列详解及java实现
导读 栈和队列是有操作限制的线性表. 目录 1.队列的概念.特点.存储结构. 2.栈队列的java实现. 概念 队列是一种在一端进行插入,而在另一端进行删除的线性表.1.队列的插入端称为队尾:队列的删 ...
- 吓尿了,mac下bash出了问题
由于个人的脑残行为,使用homebrew安装bash后,使用chsh命令将其改成brew安装的特定版本的bash,结果上次brew更新bash之后,就彻底用不了shell了... 无奈只能添加新的管理 ...
- jQuery基础 (四)——使用jquery-cookie 实现点赞功能
jquery-cookie 下载地址:https://github.com/carhartl/jquery-cookie 直接上代码 html <span class="jieda-z ...