$parse
来源:互联网 发布:手机淘宝买家秀在哪看 编辑:程序博客网 时间:2024/04/28 11:51
$parse典型的使用是放在设置字符串表达式映射在真实对象上的值。也可以从$parse上直接获取到表达式对应的值。
var getter = $parse('user.name');
var setter = getter.assign;
setter(scope, 'new name');
getter(context, locals) // 传入作用域,返回值
setter(scope,'new name') // 修改映射在scope上的属性的值为‘new value’
这里是修改的是变量,其实在解析的时候还有可能是是函数比如
<div ng-app="MyApp">
<div ng-controller="MyController">
<div>{{ParsedValue}}</div>
</div>
</div>
(js)
angular.module("MyApp",[])
.controller("MyController", function($scope, $parse){
$scope.context = {
add: function(a, b){return a + b;},
mul: function(a, b){return a * b}
}
$scope.expression = "mul(a, add(b, c))";
$scope.data = {
a: 3,
b: 6,
c: 9
};
var parseFunc = $parse($scope.expression);
$scope.ParsedValue = parseFunc($scope.context, $scope.data);
});
可以看到结果是45,我们大致可以这样理解,$parse服务根据$scope.context中提供的上下文解析$scope.expression语句,然后使用$scope.data数据填充表达式中的变量注意,如果把$scope.expression中的c换成4,那么结果就是30,所以得到45结果。
总之
$parse 返回一个函数,调用这个函数时,可以传两个参数,第一个作用域,第二个是变量集,后者常用于覆盖前者的变量:
var get_name = $parse('name');var r = get_name({name: 'xx'}, {name: 'abc'});console.log(r);
$parse 返回的函数,也提供了相应的 assign 功能,可以为表达式赋值(如果可以的话):
var get_name = $parse('name');var set_name = get_name.assign;var r = get_name({name: 'xx'}, {name: 'abc'});console.log(r);var s = {}set_name(s, '123');var r = get_name(s);console.log(r);
- parse
- parse
- parse
- $parse
- Hard Parse&Soft Parse
- easyUI parse.parse()
- hard parse soft parse soft soft parse
- parse XML
- Parse JSON
- android parse
- Enum.Parse
- Mtk.Parse
- xml parse
- parse date
- JSON.parse
- Parse 是什么
- JSON.parse()
- html parse
- matlab_make
- 大图片裁剪加载的解决方案
- git操作过程
- Machine learning algorithms-Dlib C++ Library
- android apk反编译
- $parse
- 关于ubuntu openssh-server 安装失败问题
- 在进程间可公用的全局变量
- 博客前言
- mybatis分页插件(物理分页)
- 艰难的Qt学习之路——简易加法器
- 在dokcer中安装Phpmyadmin并与mysql容器连接
- jquery 获取标签名(tagName)
- 设置一些基础变量--initNEW2-UFT.bat