Angularjs 在控制器之间共享方法

2024-03-05

我有一个应用程序,它在一个页面(主页)上显示新闻提要,在另一个页面上仅显示用户的提要(用户个人资料页面)。

两个页面的外观和行为方式相同。内容的变化是由于调用了不同的URL。

在AngularJS中如何解决这个问题?

我有一个家庭控制器,它具有用于显示主页的所有方法/逻辑。

现在我需要再有一个控制器来调用另一个 URL 并执行与家庭控制器相同的操作。

我正在考虑诸如父控制器和两个控制器之类的东西。但看起来在 AngularJS 中控制器继承是由 dom 结构决定的。就我而言,它们是两个不同的页面。所以我无法创建 dom 风格的继承。

我对如何在不重复两个控制器中的代码的情况下解决这个问题感到困惑。

如果需要,我很乐意为这个问题添加更多细节。我浏览了一些谷歌结果,但我不知道如何做到这一点。


服务(而不是控制器)应该拥有域模型,并提供模型API https://stackoverflow.com/questions/16607874/where-should-model-state-be-stored-in-angular-js#comment23896198_16607874供应用程序的其余部分(通常是控制器)使用。

我建议至少有两项服务,一项用于您的新闻源,一项用于您的个人资料,也许还有一项用于任何共享功能(这些功能可以作为参数传递一个集合或单个帖子)。将适当的服务注入每个控制器。

“外观”应该位于使用 ng-view 或 ng-include 引入的 HTML 模板中。模板的 ng-repeat 将引用一个 $scope 属性的集合,该属性是对存储在您的服务之一中的数据的引用。

有关新闻源服务的示例以及控制器如何获取对数据的引用,请参阅服务是否应该暴露其异步性? https://stackoverflow.com/questions/17416599/should-services-expose-their-asynchronicity

我不担心重复使用 $http 服务所需的代码并在每个服务中返回承诺。有一天,您的个人资料页面的外观/行为可能会开始与您的新闻源页面不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angularjs 在控制器之间共享方法 的相关文章

随机推荐