我对角度范围如何工作感到困惑!!!
我使用ng-init和onLoad将两个变量传递给一个模板。这两个变量值都是从模板访问的,但是有一个控制器我已经绑定到该模板。我在想为什么两个变量都从模板打印它的值,但在从控制器访问时打印undefined(onLoad varibale)。
Fiddle illustrating my problem
jsFiddle
我理解的是,当我们使用ng-init传递变量时,它会在当前范围内创建该变量,但该变量是由onLoad传递的?
请告诉我它是如何运作的。
谢谢。
答案 0 :(得分:3)
第二个控制器都可以访问这两个变量。
然而(看起来)第二个控制器是在评估onload
表达式之前创建的。话虽这么说,如果你想访问范围变量,你可以通过监视(你可能想要使用监视而不是使用范围变量的初始值,无论如何 - 如果你的变量是一个承诺的结果怎么办? ?)。
以下是一个示例,显示您可以从第二个控制器访问负载:
答案 1 :(得分:2)
因为在浏览器解析页面之前,ng-init是通过角度计算的。因此控制器会获取第一个值。在此之后发生了onload。因此,将值设置为onload为时已晚。