为了账号安全,请及时绑定邮箱和手机立即绑定

关于angular的$parse 的个人见解

标签:
AngularJS
    <div ng-controller="ctr">
        <div>{{val}}</div>
    </div>
    <script>
        angular.module('app', [])
        .controller('ctr', function($scope,$parse){
            $scope.con={
                a:function(b){
                    b='1.'+b;
                    return b;
                }
            }
            $scope.expression='a(b)';
            var parseFunc=$parse($scope.expression);
            $scope.val=parseFunc($scope.con,{b:2});
        });

    </script>

这段代码中主要的是这两句

var parseFunc=$parse($scope.expression);
$scope.val=parseFunc($scope.con,{b:2});

$parse() 这里传入的是你需要处理的东西,相当于一个函数,返回的是这样

function(scope, locals) {}

第一个参数scope是$scope.expression所需要运行的环境,locals是你运行环境环境里面所需要的数据。

$scope.expression='a(b)';
var parseFunc=$parse($scope.expression);
$scope.val=parseFunc($scope.con,{b:2});

这两个地方的b是同样的,locals说白了就是传递数据给$scope.expression。
最后你在看看这个大概就能明白了吧,第二个参数可以不用赋值,如果你的$scope.expression已经赋值的话。经过测试,这里的b只能是数字,别的东西会运行出错,所以b如果已经是数字可以不用写locals这个参数了。

    <div ng-controller="ctr">
        <div>{{val}}</div>
    </div>
    <script>
        angular.module('app', [])
        .controller('ctr', function($scope,$parse){
            $scope.con={
                a:function(b){
                    b='1.'+b;
                    return b;
                }
            }
            var parseFunc=$parse('a(4)');
            $scope.val=parseFunc($scope.con);
        });

    </script>
点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消