gpt4 book ai didi

angularjs - 如何在不同的 Controller 中以 Angular 设置不同的菜单

转载 作者:行者123 更新时间:2023-12-04 04:58:02 25 4
gpt4 key购买 nike

我的应用程序中有顶部菜单,我希望根据 Controller 有不同的内容。在 Rails 中,使用 content_for 很容易,但是如何用 Angular 来实现呢?我已经知道这个解决方案:AngularJS: How can I pass variables between controllers?但也许有更好的方法来做到这一点?

最佳答案

Angular 的一个有趣之处在于,如果不了解应用程序的上下文,通常没有“更好的方法”。有“其他”方式,最好的方式很大程度上取决于。我想更多信息也可能有助于定制或推荐特定答案。

然而,这是我关于这个话题的想法:

第一个想法

更明确的服务

您找到的答案还不错,尽管我可能会更进一步,并提供某种“菜单服务”而不是高度通用的“属性(property)”商店。此菜单服务可以由 ng-view 的 Controller 操作。实例化。

通过路由映射

更进一步,可以在路由提供者声明中包含菜单信息,然后在 $routeChangeSuccess$routeChangeStart让菜单 Controller 根据路由中的数据进行自我更新(也许还要维护服务,以便 Controller 可以提供“特殊”菜单选项,从而允许一定程度的定制)。

更多选项

如果共享服务(Angular 最佳实践,仅供引用)不符合您的喜好或设置,并且使用路由也不合适(可能很棘手),那么我可以看到更多选项:
$rootScope
一种是注入(inject)$rootScope (所有范围的曾祖父)并在那里收藏您的菜单项;然后每个 Controller 都可以手动更新它。

自定义事件

这里$rootScope.$emit()是你的 friend ——你可以发出某种事件并提供菜单配置数据。然后 Controller 将监听 ($rootScope.$on()) 事件并用新发出的菜单列表更新/清除/替换它自己的菜单项列表。

高级路由

更有趣的是,您甚至可以尝试查看是否在 resolve 中包含函数部分路线可以解决问题。

引用文献

使用范围的信息在 Angular 的文档中:http://docs.angularjs.org/api/ng .$rootScope.Scope

关于复杂路由的信息在这里:http://www.yearofmoo.com/2012/10/more-angularjs-magic-to-supercharge-your-webapp.html#additional-features-of-controllers-and-routes (yearofmoo 是 Rails 的粉丝,所以他们的意见可能与你的一致)

关于angularjs - 如何在不同的 Controller 中以 Angular 设置不同的菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16506597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com