Angular docs:如何在控制器之间共享无状态/有状态代码?

时间:2013-11-22 12:20:55

标签: angularjs

一直在阅读Angular.js'Controller docs并偶然发现:

  

跨控制器共享无状态或有状态代码 - 使用angular   相反,服务。

但这让我不确定。如何在控制器之间共享无状态/有状态代码?或者“代码”在这里意味着什么?一个模型?此外,据我所知,控制器不会互相引用。任何人都可以为我(其他人)解决问题吗?感谢。

2 个答案:

答案 0 :(得分:2)

我认为他们所指的可能是“持久化”数据,在控制器之间或路由更改之间共享数据的方法之一。一种方法是将它放在rootScope中,另一种方法是使用服务。如果您定义这样的服务:

.factory("MyDataObject", function() {
    return {};
})

然后MyDataObject将是您调用它的任何对象,允许您将内容保存到其中,以便在控制器(或指令或其他服务等)之间共享数据,函数和状态。

你永远不会知道Angular文档,但我猜这就是他们所说的:)

例如,请参阅此答案:Angularjs, passing scope between routes

答案 1 :(得分:2)

以下是我对主题的看法。有角度的人总是试图解释,范围不是你的模型。角度“服务”是这样做的方式,但是文字服务就是这样且过载的术语。来自DDD的背景,我无法将文字服务与状态或状态相协调,这对我来说没有意义。更有意义的是ViewModel或者你想要的任何东西。由于我使用MVVM模式使用Silverlight,因此我称之为ViewModel。因为它是一个“控制器”的工作,为视图提供范围,我的控制器迄今为止非常精益。大量逻辑在ViewModels中,通过控制器创建的$ scope与View相关联。那有意义吗?所以我的控制器可能会依赖于mySearchViewModel,大部分逻辑都在那里,可以在控制器之间共享,并将它与一个视图相关联,你可以在mySearchController中执行类似$scope.vm = mySearchViewModel的操作。