在angularjs中同步范围

时间:2013-03-07 12:18:53

标签: angularjs

我们正在构建一个将成为一个巨大的角度应用程序。我们已经使用了大量的指令,服务,并且有多达14个控制器。

我们的问题是在控制器之间共享数据。我们希望能够在远离(不是兄弟)的控制器之间共享数据,并且不会破坏双向绑定。

我建议使用专门用于传输数据的服务。

var MyApp = angular.module('MyApp', []);

MyApp.factory('dataContainer', function(){ return {} });
function FirstCtrl($scope, dataContainer) {
    $scope.data = dataContainer;

}

function SecondCtrl($scope, dataContainer) {
    $scope.data = dataContainer;
}

您可以在小提琴http://jsfiddle.net/didier_/R2Bgs/2/中尝试。

这是好的做法吗?

1 个答案:

答案 0 :(得分:2)

使用服务绝对是一个好主意。您不必将这些对象视为服务,这只是Angular项目中的默认命名。一旦你的应用程序增长,你可能最终会得到不同类型对象的工厂(例如状态对象,资源对象,辅助对象等),名称“services”变得有点模棱两可。

尽管如此,我仍然会谨慎地处理原始状态对象。您可能应该在方法/ getter和setter中对它进行封装访问,以避免让应用程序的不同部分在不应该的情况下覆盖彼此的状态,这可能会让调试变得有点麻烦。