AngularJS中的$parse服务与$eval服务用法实例

 更新时间:2023年05月30日 09:14:39   作者:书香水墨  
这篇文章主要介绍了AngularJS中的$parse服务与$eval服务用法,结合实例形式分析了AngularJS中$parse服务与$eval服务的功能、使用方法与相关注意事项,需要的朋友可以参考下

一、$parse服务

$parse服务可以将一个表达式转换为一个函数。这个函数可以被调用,其中的参数是一个上下文对象,通常来说是作用域。
另外,通过$parse的表达式返回的这个函数有一个assign属性。这个assign属性也是一个函数,它可以用来在给定的上下文中改变这个表达式的值。

<div my-attr="obj.name" my-directive>testing</div>
app.directive('myDirective',function($log, $parse) {
    return function(scope, elem, attrs) {
        //解析"my-attr属性值到一个函数中"
        var model = $parse(attrs.myAttr);
        //model现在是一个函数,可以调用它来获取表达式的值
        //下面这行代码将会输出作用域中obj.name的值  
        $log.log(model(scope));
        elem.bind('click',function(){
        //'model.assign'也是一个函数,它用来更新表达式的值  
        model.assign(scope,'New name');
        scope.$apply();
        })
    }
});

上面的例子可以充分体现我们为什么需要$parse服务。如果属性值是name,那么我们完全可以不用$parse,只用scope[attrs.myAttr]即可。但是在上面的例子中,方括号并不管用。

二、$eval服务

$eval是一个作用域scope中的方法,它将会在当前作用域中执行一个表达式并返回结果:

scope.a = 1;
scope.b = 2;
scope.$eval('a+b'); // 3  

相关文章

  • AngularJS 使用$sce控制代码安全检查

    AngularJS 使用$sce控制代码安全检查

    SCE,即strict contextual escaping,我的理解是 严格的上下文隔离 ...翻译的可能不准确,但是通过字面理解,应该是angularjs严格的控制上下文访问,通过本文给大家介绍AngularJS 使用$sce控制代码安全检查,对angularjs sce相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • angularjs实现table增加tr的方法

    angularjs实现table增加tr的方法

    下面小编就为大家分享一篇angularjs实现table增加tr的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • angularjs中判断ng-repeat是否迭代完的实例

    angularjs中判断ng-repeat是否迭代完的实例

    今天小编就为大家分享一篇angularjs中判断ng-repeat是否迭代完的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • angularJs利用$scope处理升降序的方法

    angularJs利用$scope处理升降序的方法

    今天小编就为大家分享一篇angularJs利用$scope处理升降序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • AngularJS实现动态添加Option的方法

    AngularJS实现动态添加Option的方法

    这篇文章主要介绍了AngularJS实现动态添加Option的方法,涉及AngularJS事件响应及页面元素动态操作相关实现技巧,需要的朋友可以参考下
    2017-05-05
  • 详解Angular2 之 结构型指令

    详解Angular2 之 结构型指令

    本篇文章主要介绍了详解Angular2 之 结构型指令,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 详解使用KeyValueDiffers检测Angular对象的变化

    详解使用KeyValueDiffers检测Angular对象的变化

    这篇文章主要为大家介绍了KeyValueDiffers检测Angular对象的变化使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • indexedDB bootstrap angularjs之 MVC DOMO (应用示例)

    indexedDB bootstrap angularjs之 MVC DOMO (应用示例)

    这篇文章主要介绍了indexedDB bootstrap angularjs之 MVC DOMO (应用示例)的相关资料,需要的朋友可以参考下
    2016-06-06
  • Angular2内置指令NgFor和NgIf详解

    Angular2内置指令NgFor和NgIf详解

    Directive的概念在Angular 1.x就存在了,我对它的认识比较模糊,所以直接通过一些例子来说明。Angular提供的内置执行有很多,这次使用两个:ngFor、ngIf。
    2016-08-08
  • Angularjs中使用指令绑定点击事件的方法

    Angularjs中使用指令绑定点击事件的方法

    本篇文章主要介绍了Angularjs中使用指令绑定点击事件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03

最新评论