当前位置: 老葡京网站娱乐 > web开发 > 脚本语言 > 正文

angularjs表达式-Expression

时间:2013-02-14 51cto 破狼

老葡京网站娱乐 www.sdguanhua.com 紧接上节谈到再谈angularjs DI(Dependency Injection),在这里介绍关于angularjs的表达式expression。expression指的 是javascript的一小片段代码,通常用于绑定(binding)例如:{{ expression }}。在angularjs中是通过$parse service解析 。

$parse用法: $parse(expression);

参数:javascript代码片段。

返回值:{function(context, locals)} ,表达式编译结果:

context:嵌入表达式执行的作用于scope。

locals:本地变量,常用于替换重写context。

返回值 同样带有assign属性,允许为表达式赋值。

下面的表达式在angularjs将都是合法的表达式:

1+2

3*10 | currency

user.name

angularjs表达式vs. javascript表达式

angularjs视图表达式有点像javascript表达式, 但是并不是利用javascript表达式eval()函数解析执行的,与javascript表达式区别如下:

所有属性都依赖于scope作用 于。并不是javascript的全局作用于window。

表达式计算兼容处理null和undefined,而javascript则会抛出 NullPointerExceptions异常。

没有控制流程语句,条件,循环throw。

过滤器,多余angularjs表达式计算结果可以通过 过滤器转化格式,|表达式,如时间,货币,数字格式等。

注: 对于angularjs表达式,可以采用$eval()方法解析执行 。

Demo

html:

<!doctype html>    

<html ng-app>    

<head>    

<script src="http://code.angularjs.org/angular-1.0.2.min.js"></script>    

<script src="script.js"></script>    

</head>    

<body>    

<center ng-controller="Cntl2" class="expressions">    

Expression:     

<input type='text' ng-model="expr" size="80"/>    

<button ng-click="addExp(expr)">Evaluate</button>    

<ul>    

<li ng-repeat="expr in exprs">    

[ <a href="" ng-click="removeExp($index)">X</a> ]     

<tt>{{expr}}</tt> =&gt; <span ng-bind="$parent.$eval(expr)"></span>    
        
</li>    
        
</ul>    
        
</center>    
        
</body>    
        
</html>