javascript - Angular : Automatically update a scope reference to an object defined in a service?

标签 javascript angularjs angularjs-scope angularjs-service

我有一个 Angular 应用 myApp有服务myService ,拿着一个物体data由两个 Controller 使用,parentCtrlchildCtrl后者继承前者:https://jsfiddle.net/OleWahn/7ehLva10/2/

我引用了 dataparentCtrl 内通过 $scope.data = myService.getData()这也使得它可以从 childCtrl 访问.

我定义 data在关闭myService ,因此 $scope.data只是对 data 的引用.

因此,我可以更改 data子 Controller 和每个人中的属性,myService , parentCrlchildCtrl将意识到这些变化。到目前为止,还不错。

我的问题如下:如果我想覆盖整个 data我调用的对象 myService方法 setDatachildCtrl 内.

再次,我希望每个人都能收到 data 的通知。已经改变。 $scope.data然而仍然指向最初定义的对象,不会被myService通知那data已经改变,这将是我的最后一个问题:

有没有办法自动更新对服务中定义的对象的范围引用?

最佳答案

使用angular.copy的目标参数

angular.copy1

Usage

angular.copy(source, [destination]);
  • If a destination is provided, all of its elements (for arrays) or properties (for objects) are deleted and then all elements/properties from the source are copied to it.

因此,与其替换范围引用,不如保留引用、清空它并用新内容填充它。

function setData(newData) {
    //DO this
    angular.copy(newData, data);
    //Instead of this
    //data = newData;   
}

关于javascript - Angular : Automatically update a scope reference to an object defined in a service?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750045/

相关文章:

javascript - 使用大括号指定属性中的 Angular 表达式

javascript - 错误 : this. getToken 不是函数

angularjs - Protractor 测试用例 : Process exited with error 1 的问题

angularjs - 如何使用 angularjs 在 ionic 中制作简单的按钮导航

javascript - typeahead.js 结果是指定的 div

javascript - illustrator 自动映射到 imagemap?或者,还有更好的方法?

javascript - 使用鼠标事件播放/暂停 gif

angularjs - 为什么 Angular 日期过滤器显示错误的日期?

angularjs - 如何从一个 Angular 模块传递另一个模块的值?

javascript - Fabric.js - 将光标设置为自由绘图画笔大小和颜色