$parse

再来看 $parse作用:将一个AngularJS表达式转换成一个函数

就记住一句话!!!!作用:将一个AngularJS表达式转换成一个函数

3个例子

例1:

angular.module("MyApp",[])

.controller("MyController",function($scope, $parse){

varcontext= {

name:"dreamapple"

};

// 因为这个解析的语句中含有我们想要解析的表达式,

// 所以要把不相关的用引号引起来,整体然后用+连接

varexpression="'Hello ' + name";

varparseFunc= $parse(expression);

$scope.ParsedValue=parseFunc(context);

});


//Hello dreamapple

expression:是我们想要解析的表达式

context:就是一个解析表达的上下文环境(个人理解)

parseFunc:就是解析以后返回的函数


例2:

angular.module("MyApp",[])

.controller("MyController",function($scope, $parse){

$scope.$watch("expression",function(newValue, oldValue, context){

if(newValue !== oldValue){

varparseFunc= $parse(newValue);

$scope.ParsedValue=parseFunc(context);

}

});

});

我们使用$watch监测input输入框的变化,

每当输入框中的表达式的值发生变化时,我们都会解析它,我们可以尝试向输入框中输入"1+1",然后就会看到下面显示2。


例3:

angular.module("MyApp",[])

.controller("MyController",function($scope, $parse){

$scope.context= {

add:function(a, b){returna + b;},

mul:function(a, b){returna * b}

}

$scope.expression="mul(a, add(b, c))";

$scope.data= {

a:3,

b:6,

c:9

};

varparseFunc= $parse($scope.expression);

$scope.ParsedValue=parseFunc($scope.context, $scope.data);

});

//    $parse服务根据$scope.context中提供的上下文解析$scope.expression语句,

//    然后使用$scope.data数据填充表达式中的变量注意,如果把$scope.expression中的c换成4,那么结果就是30,所以得到45结果

你可能感兴趣的:($parse)