Javascript AngularJS-为什么服务中的对象会触发$digest循环,而赋值不会触发?

Javascript AngularJS-为什么服务中的对象会触发$digest循环,而赋值不会触发?,javascript,angularjs,Javascript,Angularjs,我已经摆弄AngularJS服务很长一段时间了,我反对关于双向绑定的问题 也许举个例子会有所帮助: 我的服务中有一个可变地址,我希望通过$http服务调用填充它。但是,一旦XHR完成,地址变量中的更改就不会级联到控制器——否则,我会对其进行隐式监视。此外,当对象表示法用于值(即address.street)时,绑定就起作用 你能分享一下你的想法吗?这与编程的“通过引用”概念有关吗 顺便说一句,这是我为模拟我的困境而创建的一个模型 提前谢谢你 是的,我相信你看到的是混合原始赋值和引用赋值的结果 在

我已经摆弄AngularJS服务很长一段时间了,我反对关于双向绑定的问题

也许举个例子会有所帮助: 我的服务中有一个可变地址,我希望通过$http服务调用填充它。但是,一旦XHR完成,地址变量中的更改就不会级联到控制器——否则,我会对其进行隐式监视。此外,当对象表示法用于值(即address.street)时,绑定就起作用

你能分享一下你的想法吗?这与编程的“通过引用”概念有关吗

顺便说一句,这是我为模拟我的困境而创建的一个模型


提前谢谢你

是的,我相信你看到的是混合原始赋值和引用赋值的结果

在您提供的JSFIDLE中,名称被分配给一个原语,即字符串和对象的地址。然后,在控制器中,尝试通过方法将这些服务变量分配给$scope下的变量

由于name是一个原语,$scope.name只复制字符串值,因此即使在调用相关服务时也不会更新。毕竟,原语是不可变的

另一方面,由于address是一个对象,并且不管您是否使用了前面提到的对象概念,$scope.address都会复制引用,并且随后会收到值更新的通知

这里有一本很棒的书,详细解释了围绕你的难题的概念


嗨,miqid,我会阅读你提供的文章,如果你的资源到位,我会稍后回来。提前感谢!