Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angular指令是如何实现的?_Javascript_Angularjs - Fatal编程技术网

Javascript angular指令是如何实现的?

Javascript angular指令是如何实现的?,javascript,angularjs,Javascript,Angularjs,让我们举一个例子{{myVariable+1}} 据我所知,我只能将其解析为函数,并为其提供上下文 但是,该语句将因此变成{{this.myVariable+1}} angular是如何摆脱这个的?angular没有摆脱这个。在angular中,使用作用域在控制器和视图之间传递值此是函数执行上下文,这意味着调用当前函数或属性的对象 但是AngularJS的编写并不是为了在数据绑定中使用它,而是为了专门解析那些{{}数据绑定,并在相应控制器的范围对象上查找属性 因此,我们可以看到以下内容: <

让我们举一个例子
{{myVariable+1}}

据我所知,我只能将其解析为
函数
,并为其提供上下文

但是,该语句将因此变成
{{this.myVariable+1}}


angular是如何摆脱这个的?

angular没有摆脱这个。在angular中,使用作用域在控制器和视图之间传递值<代码>此是函数执行上下文,这意味着调用当前函数或属性的对象

但是AngularJS的编写并不是为了在数据绑定中使用它,而是为了专门解析那些
{{}
数据绑定,并在相应控制器的
范围
对象上查找属性

因此,我们可以看到以下内容:

<div ng-controller="mainCtrl">
    <p>{{myVariable}}</p>
</div>

{{myVariable}}


并且知道转到
mainCtrl
控制器并查看
$scope
对象以查找
myVariable
变量<代码>此从未进入

我想出了一个办法

var env = '';
for (var key in context) {
    env = "var " + key + " = this." + key + ";\n";
}
var fn = new Function(env + 'return ' + script);
fn.call(context);

评估它并给它范围上下文?
这是当前控制器。如果没有
,您将使用作用域@Jasny据我所知,您只能在控制器端使用
,在视图端,您必须使用
中的控制器别名作为