0

我们正在构建一个大型的 Angular 应用程序。我们已经大量使用指令、服务,并且拥有多达 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/中尝试一下。

这是好习惯吗?

4

1 回答 1

2

为此使用服务绝对是一个好主意。您不必考虑诸如服务之类的对象,这只是 Angular 项目中的默认命名。一旦您的应用程序增长,您可能最终会得到不同类型对象的工厂(如您的示例中的状态对象、资源对象、帮助对象等),并且“服务”这个名称变得有点含糊不清。

不过,我会对像这样传递原始状态对象持谨慎态度。您可能应该在方法/getter 和 setter 中包装对它的访问,以避免让应用程序的不同部分在不应该覆盖彼此的状态时覆盖彼此的状态,这可能有点难以调试。

于 2013-03-07T12:47:54.917 回答