为什么变量只有在ng-include中的onLoad传递时才能在模板中访问?

时间:2013-08-26 11:11:53

标签: angularjs

我对角度范围如何工作感到困惑!!!

我使用ng-init和onLoad将两个变量传递给一个模板。这两个变量值都是从模板访问的,但是有一个控制器我已经绑定到该模板。我在想为什么两个变量都从模板打印它的值,但在从控制器访问时打印undefined(onLoad varibale)。

Fiddle illustrating my problem jsFiddle

我理解的是,当我们使用ng-init传递变量时,它会在当前范围内创建该变量,但该变量是由onLoad传递的?

请告诉我它是如何运作的。

谢谢。

2 个答案:

答案 0 :(得分:3)

第二个控制器都可以访问这两个变量。

然而(看起来)第二个控制器是在评估onload表达式之前创建的。话虽这么说,如果你想访问范围变量,你可以通过监视(你可能想要使用监视而不是使用范围变量的初始值,无论如何 - 如果你的变量是一个承诺的结果怎么办? ?)。

以下是一个示例,显示您可以从第二个控制器访问负载:

http://jsfiddle.net/rDP2t/3/

答案 1 :(得分:2)

因为在浏览器解析页面之前,ng-init是通过角度计算的。因此控制器会获取第一个值。在此之后发生了onload。因此,将值设置为onload为时已晚。