我知道$ parse和$ eval都运行在Angular表达式上。为什么Angular团队创造了这两个?
我检查了角度库,$ eval定义如下:
$eval: function(expr,locals) { return $parse(expr)(this,locals); }
所以有什么区别:
$parse(expr)(context,locals);
和
$eval: function(expr,locals); }
我想知道哪一个是最佳实践?什么时候使用这两个?
你注意到,
原文链接:https://www.f2er.com/angularjs/144656.html$parse(expr)($scope,locals)
完全相当于
$scope.$eval(expr,locals)
但是,$ parse是比$ eval更“基本”的操作,所以你可以在一个地方解析一次(例如,在一个指令的编译函数中):
var parsedExpr = $parse(tAttrs.p1);
并在其他地方重复使用(例如,在控制器功能中)
var childScope1 = $scope.$new(); var childScope2 = $scope.$new(); var r1 = parsedExpr(childScope1); var r2 = parsedExpr(childScope2);