我一直在摆弄AngularJS服务很长一段时间,我反对双向绑定问题。
也许一个例子可能会有所帮助:
我的address
中有一个变量service
,我想通过$ http服务调用填充它。但是一旦XHR完成,address
var中的变化就不会被级联到控制器 - 以免我对它进行隐式监视。此外,当object notation
用于值address.street
时,绑定有效。
你能分享一下你对此的看法吗?这与编程的pass by reference
概念有关吗?
顺便说一句,这是我为模拟我的困境而创建的fiddle。
先谢谢你了!
答案 0 :(得分:0)
是的,我相信你所看到的是混合原语和参考作业的结果。
在你提供的JSFiddle中,name
被分配给一个原语(即字符串)和address
分配给一个对象。然后,在您的控制器中,您尝试将这些服务变量(通过方法)分配给$scope
下的变量。
由于name
是原语,$scope.name
最终只会复制字符串值,因此即使调用相关服务也不会更新。毕竟,原始是不可改变的。
另一方面,由于address
是一个对象,并且无论您是否使用了对象概念,$scope.address
都会复制引用,然后会通知更新值
这是一篇很好的阅读,详细解释了围绕你的难题的概念。