AngularJs深入理解表达式

表达式在AngularJs应用中广泛使用,因此深入理解AngularJs如何使用并运算表达式是非常重要的。

表达式的示例,用{{ }}符号将一个变量绑定到$scope对象上的写法本质上就是一个表达式{{ expression }}。当用$watch监听时,AngularJs会对表达式或者函数进行运算。

表达式和eval(Javascript)非常相似,但是由于表达式由AngularJs处理,他们有以下显著不同的特点:

 所有的表达式都在其所属的作用域内部执行,并有访问本地 $scope 的权限;
 如果表达式发生了 TypeError 和 ReferenceError 并不会抛出异常;
 不允许使用任何流程控制功能(条件控制,例如 if/eles );
 可以接受过滤器和过滤器链。

对表达式进行的任何操作,都会在其所属的作用域内部执行,因此可以在表达式内部调用那些限制在此作用域内的变量,并进行循环、函数调用、将变量应用到数学表达式中等操作。

1、解析 AngularJS 表达式

尽管AngularJs会在运行$digest循环的过程中自动解析表达式,但有时手动解析表达式也是非常有用的。

AngularJs通过$parse这个内部服务来进行表达式的运算,这个服务能够访问当前所在的作用域,这个过程允许我们访问定义在$scope上的原始Javascript数据核函数。

将$parse服务注入到控制器中,然后调用它就可以实现手动解析表达式。看下面的栗子:

/*ng-app = 'myApp'*/
<div ng-controller="MyController">
	<input type="text" placeholder="Enter The Expression" ng-model="expr"/>
	<h2>{{parseValue}}</h2>
</div>

angular.module('myApp',[])
.controller('MyController',['$scope','$parse',function($scope,$parse){
	$scope.$watch = ('expr',function(newVal,oldVal ,scope){
		if(oldVal !== newVal){
			var parseFun = $parse(newVal)
			$scope.parseValue = parseFun (scope)
		}
	})
}])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值