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

参考

angular 表达式与指令的更多相关文章

  1. angularJS表达式和指令

    主要是描述angularJS如何扩展html的:(模型后面会涉及) 例子1:通过指令来扩展html <body ng-app="myapp">  <!--  ng ...

  2. Angular.js之指令学习笔记

    <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...

  3. angular内置指令相关知识

    原文地址 https://www.jianshu.com/p/5a5b43a8e91f 大纲 1.angular指令的分类 2.angular指令之——组件 3.angular指令之——属性指令 (n ...

  4. Angular内置指令(二)

    目录: $rootScope,ng-app,.run(),ng-include,ng-repeat,ng-if,ng-switch,ng-init ng-show/ng-hide,ng-model,n ...

  5. Angular内置指令(一)

    要注意的是不要把自己开发的指令以ng开头,以免与内置指令冲突  目录:ng-disabled,ng-readonly,ng-checked,ng-selected,ng-href,ng-src,ng- ...

  6. angularjs学习总结一(表达式、指令、模型)

    一:自执行匿名函数 (function(){ /*code*/})();自执行匿名函数:常见格式:(function() { /* code */ })();解释:包围函数(function(){}) ...

  7. 秒味课堂Angular js笔记------指令

    1.属性指令 angularjs样式相关指令: ng-class ng-style ng-href ng-src ng-attr-(suffix) ng-bind ng-cloak  没解析完之前标签 ...

  8. Angular内置指令

    记录一下工作中使用到的一些AngularJS内置指令 内置指令:所有的内置指令的前缀都为ng,不建议自定义指令使用该前缀,以免冲突 1. ng-model 使用ng-model实现双向绑定,通过表单的 ...

  9. angular中重要指令介绍($eval,$parse和$compile)

    在angular的服务中,有一些服务你不得不去了解,因为他可以说是ng的核心,而今天,我要介绍的就是ng的两个核心服务,$parse和$compile.其实这两个服务讲的人已经很多了,但是100个读者 ...

随机推荐

  1. 使用JavaScript将图片保存至本地

    在最近的开发当中,我们需要为img标签以及canvas动态绘制的图像提供下载功能,下面是经过探索后我们得出的结果. 一.Canvas 版本 // 下载Canvas元素的图片 function down ...

  2. 2017双11海量数据下EagleEye的使命和挑战

    摘要: EagleEye作为阿里集团老牌的链路跟踪系统,其自身业务虽不在交易链路上,但却监控着全集团的链路状态,特别是在中间件的远程调用上,覆盖了集团绝大部分的场景,在问题排查和定位上发挥着巨大的作用 ...

  3. 【分治】peak find

    分治算法 算法设计中一种常用的优化方法就是分治的思想,它的解决思路就是将原始的问题划分为性质一样,但是规模减小的子问题,然后通过子问题的解和合并子问题的解得到最终的解,就是分治的思想: 比较常见的分治 ...

  4. MHA高可用架构与Atlas读写分离

    1.1 MHA简介 1.1.1 MHA软件介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton ...

  5. 在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法

    在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法   对于,在Linux系统下做图像识别,不像在windows下面我们可以利用Matlab中的图像工具箱来实现,我们必须借助Ope ...

  6. 纯前端导出pdf文件

    纯前端js导出pdf,已经用于生产环境. 工具: 1.html2canvas,一种让html转换为图片的工具. 2.pdfmake或者jspdf ,一种生成.编辑pdf,并且导出pdf的工具. pdf ...

  7. Python 开发个人微信号在运维开发中的使用

    一.主题:Python 开发个人微信号在运维开发中的使用 二.内容: 企业公众号 介绍开发微信公众号的后台逻辑,包括服务器验证逻辑.用户认证逻辑 个人微信号 面对企业微信的种种限制,可以使用 Itch ...

  8. Hibernate学习笔记(5)---Query接口

    Hibernate中具有三种检索方式(HQL,QBC,SQL) Query接口 一个查询接口,用于向数据库中查询对象.并控制执行查询的过程.Query接口内封装了一个HQL查询语句. 举个栗子 //查 ...

  9. Java—javac Hello.java找不到文件

    刚开始编写Java代码时,会遇到很多困难,下面来说一个比较常见的错误,如下: 对于初学者,一般都是从Hello,World开始的学起的,废了好大劲儿,铜鼓了半天,终于要在DOS上运行javac Hel ...

  10. 【读书笔记】【深入理解ES6】#11-Promise与异步编程

    异步编程的背景知识 JavaScript 引擎是基于单线程(Single-threaded)实际循环的概念构建的,同一时刻只允许一个代码块在执行. 所以需要跟踪即将运行的代码,那些代码被放在一个任务队 ...