[英]Scope object doesn't change without $scope in Angularjs
我在這里設置了一個小小提琴http://jsfiddle.net/SPMfT/137/我想知道是否有人可以解釋為什么更改對象不起作用,同時更改對象的屬性或更改對象前面的作品中有“$ scope”。
原因是我試圖避免在控制器功能中使用范圍,因此它們更容易測試。
我的真正任務是使用ng-click =“reset(current,master)”
$scope.reset = function (current, master) { angular.copy(current, master); }
這不起作用,而這有效:
$scope.reset = function (current, master) { angular.copy($scope.current, master); }
$ scope.current和$ scope.master都存在
干杯
更新:
我的問題是我沒有更新對象本身。 要解決問題,請使用例如
angular.extend(data, { name: 'change', game:'change' });
要么
angular.copy({ name: 'change', game:'change' }, data);//Pay attention to order
原因是您正在創建一個新對象(因此是一個不同的引用)並將其分配給以前指向同一對象的局部變量。
$scope.change = function (data) {
data = { name: 'change', game:'change' };
}
該data
傳遞變量保存到你的同一對象的引用$scope.data
但你分配一個局部變量指向的對象A的一個新對象B的引用, 在本地 。 此時, $scope.data
仍然保存對之前相同對象的引用。 您所做的只是更改對局部變量的引用,並在函數末尾將其丟棄。
在您的特定情況下,它應該工作(使用current
或$scope.current
)。 我相信你正在反轉angular.copy
的參數(source, destination)
。 有關簡單演示,請參閱此更新的小提琴 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.