我想了解AngularJS在观察工厂提供的对象变化时的某种行为。AngularJS观察工厂对象的属性 - 意外行为
有一个不同的行为取决于我是否读取控制器或html中的工厂提供的对象的属性。
比较在视图中显示的属性的以下2种方式:
app.controller("testController", function($scope, testFactory){
$scope.test_obj = testFactory.read();
$scope.test_prop = testFactory.read().prop;
});
<div>{{test_obj.prop}}</div>
<div>{{test_prop}}</div>
当在TestFactory中的属性发生变化时,改变在所述图仅在第一种情况下,更新当整个对象是声明为范围,并在视图中调用该属性。当该属性直接声明为范围时,它不会在视图中自动更新。 https://jsfiddle.net/fb86p4fm/
什么是对这种现象的原因:
这种行为可以在下面的jsfiddle观察?
这使得很多感!为什么$ scope.test_obj成为一个参考,$ scope.test_prop成为一个副本,而不是一个参考? –
@JohnRose查看更新 –
是的,我知道不同的类型正在返回,一个对象和一个值。我错过了关于第一部分答案的知识 - 当在javascript中声明变量时,数字将被复制并引用对象。感谢您的帮助! –