我想了解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中聲明變量時,數字將被複制並引用對象。感謝您的幫助! –