我已经开始学习AngularJS 1.4.7并且我无法完全理解$ scope变量。 这是一个Angular控制器内的变量"喜欢" PHP类中的公共变量?
例如:
我在function1(), function2()
和HomeCtrl.js
变量中有2个函数$scope.img = null;
,在模板文件中有2 ng-click事件来调用这些函数。
在ng-cick
事件中,我致电function1
并将$scope.url
的值设为somethig
此后我调用function2
和console.log($.scope.url)
它返回null。 Null是此变量的初始化值。
我只是在$scope.url
中设置function1
的值,并且在{beller}的function2
内部为空,为什么?
我不知道为什么会发生这种情况。
答案 0 :(得分:1)
scope
是controller
的实例。
当您声明controller
时,scope
将在那里可用。
您可以通过controller
。
这就是为什么当您在controller
中更改地点时,更改将反映在scope
的所有位置。
答案 1 :(得分:0)
你真的打电话给$.scope.url
吗?那就是问题,应该是$scope.url
," $"之间没有点。和"范围"。
范围变量与变量可访问性概念(public / private / protected / etc)无关。
他们是那些魔法"变量,可以使用表达式放在模板中,它允许Angular中的数据绑定,即你的html与#34; magic"范围变量,当你只是在你的控制器中更改它们的值时,会通过angular自动更新,就像在ng-click的回调函数中一样。 (实际上它并不那么容易,在这里我们来看看$和$ digest,但是如果你没有编写自定义指令,而不是混合,例如,使用Angular代码的jQuery代码,你可能不会考虑它现在)。
双面数据绑定,自动html更新 - 这是$ scope和$ scope变量的主要内容。
范围不是和控制器的实例,它们是不同的Angular实体。