AngularJS: 什么是 $parse

AngularJS: what is $parse

AngularJS 中 $parse() 的作用是什么? AngularJS 的文档有非常简短和模糊的解释。 例如,

context – {object} – an object against which any expressions embedded in the strings are evaluated against

我不太清楚。 我理解 $parse() returns 是一个函数。但是这个功能承载了什么?做什么的?以及如何使用这个函数的结果?

$parse是angular内部使用的服务,主要用于计算表达式和渲染UI。此服务仅用作单个变量的 getter/setter。

$scope.text = 'abc';
$parse('text')($scope);  //this will result in abc
$parse('text').assign($scope,'xyz'); //this will set xyz in text

为了理解 $parse 我建议阅读 Angular 表达式:

Angular expressions are JavaScript-like code snippets that are usually placed in bindings such as {{ expression }}.

For example, these are valid expressions in Angular:

  • 1+2
  • a+b
  • user.name
  • items[index]

更多:https://docs.angularjs.org/guide/expression

简而言之:

$parse "returns a function which represents the compiled expression".

AngularJs $parse return 一个函数,可以在 $scope 之后立即执行。这可以用于单个变量 gettersetter。例如

$scope.name = 'John Doh';
$parse('name')($scope);  //this will result in John Doh
$parse('name').assign($scope,'Foo Bar');

Angular 表达式也可以用作字符串参数。