angularjs中$parse,$interpolate,$compile

三者都可用来进行视图渲染,但在不同的层面提供服务:

//示例代码
var imgHtml = '![](/path/.)';
$scope.name = 'image';
$scope.extension = 'jpg';

$parse 主要处理单个变量表达式,并能更改变量值(读写服务)。

$parse('name')($scope); //-> 'image'
$parse('name').assign($scope, 'image2'); // $scope.name -> 'image2' 

$interpolate 在$parse基础上进行包装,能处理多个变量表达式,但不能更改变量值(只读服务)。

$interpolate("/path/.")($scope) // -> 'path/image.jpg'

$compile 将字符串转为DOM节点。

$compile(imgHtml)($scope) // -> img节点