在angular中$ compile(表达式)($ rootScope)是什么意思?

时间:2017-04-23 18:44:27

标签: javascript angularjs

首先,我是一名新手JavaScript开发人员,我最近开始使用Angular,所以对于经验丰富的JavaScript程序员来说,这可能是非常明显的。

我一直在线阅读教程,使用Karma和Jasmine为Angular应用程序编写测试。在观看使用某些HTML表达式编写角度指令测试的教程时,我经常遇到方法

$compile(htmlExpressionAsString)($scopeToWhichThisHasToBeEvaluated)

有些地方我见过这种语法

我从视频教程中知道,它意味着编译表达式并根据第二个括号中提供的范围对其进行评估。

我不明白的是幕后发生的事情。

一个函数如何接受一个参数$compile(),然后神奇地给另一个带有范围参数的括号?该语法有效吗?我在这里失踪的概念是什么?只是因为我找不到确定的答案,我真的不知道在这里搜索什么。

$compile(expression)会返回一个函数吗?

1 个答案:

答案 0 :(得分:2)

语法有效,因为$compile()返回一个函数,第二个()调用返回的函数

简单示例:

function foo(a) {
  // return a function
  return function(b) {
    // return result when this function is called
    return a + b;
  }
}
let result = foo(3)(3);
console.log('Result is',result); //6