手记

关于angular的$parse 的个人见解

    <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人推荐
随时随地看视频
慕课网APP