我们正在构建一个将成为一个巨大的角度应用程序。我们已经使用了大量的指令,服务,并且有多达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/中尝试。
这是好的做法吗?
答案 0 :(得分:2)
使用服务绝对是一个好主意。您不必将这些对象视为服务,这只是Angular项目中的默认命名。一旦你的应用程序增长,你可能最终会得到不同类型对象的工厂(例如状态对象,资源对象,辅助对象等),名称“services”变得有点模棱两可。
尽管如此,我仍然会谨慎地处理原始状态对象。您可能应该在方法/ getter和setter中对它进行封装访问,以避免让应用程序的不同部分在不应该的情况下覆盖彼此的状态,这可能会让调试变得有点麻烦。