我在这里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)
。有关简单演示,请参见此更新的小提琴。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句