我对 Angular 很陌生,想知道处理这个问题的最佳方法是什么。我的应用程序由跟踪应用程序状态和当前加载数据的服务构成。我将它注入到我的所有控制器中,以便与它们共享应用程序状态,也可以通过使用服务在控制器之间进行更改。该服务的概述有点像这样:
app.factory('AppStateService', function() {
return {
selected_section: "blog",
data_of_selected_section: {here_comes_data_from_an_api}
}
}
如前所述,我将其注入所有控制器并将它们绑定到控制器范围,因此它们都可以更改这些属性,并且效果很好。但是,我真的希望该服务在某些属性发生更改时自动对 API 进行 $http 调用。当数据从 API 返回时,我希望将此数据分配给一个属性,以便控制器可以根据此数据进行更新。
例如,在上面的示例中,如果控制器selected_section
从“blog”更改为“main”,我希望服务执行 $http 调用并将返回的数据放入data_of_selected_section
以使其传播到控制器。我当然可以直接从控制器执行此操作并将结果从那里推送到服务,但是我必须在每个控制器中复制该代码。因此,我宁愿让服务自己做。
做这个的最好方式是什么?我想我必须在服务中构建一个$watch
或$watchCollection
某个地方,但我很难弄清楚如何做到这一点。特别是因为我可以很容易地想象以错误的方式进行操作会影响性能。
顺便说一句,我想这样做的原因是因为我正在做数据可视化,因此它主要是我的界面而不是我的数据会改变。因此,我真的很想将我的数据和应用程序状态“全局”存储在服务中。我不知道这是否有意义。任何帮助将不胜感激!