gpt4 book ai didi

javascript - AngularJS - 有没有一种方法可以在不使用路由的情况下将数据注入(inject) Controller ?

转载 作者:行者123 更新时间:2023-11-28 07:24:11 25 4
gpt4 key购买 nike

我的 Angular 应用程序中有一个 Controller ,需要一些服务器端初始化。我想同步执行此操作,这意味着应该在启动 Controller 之前获取数据。我在应用程序配置中使用 RouteProvider 将数据同步加载并注入(inject)到许多其他 Controller 中:

$routeProvider
.when('/Home', {
templateUrl: 'default/home', controller: 'homeController',
resolve: { 'InitPageData': ['initPageService', function (initPageService) { return initPageService.init("home/initpage"); }] }
})

但是我有一个 Controller 没有与其关联的特定路由或 templateUrl。它位于许多不同页面和路由使用的共享布局页面中。我尝试了这个,假设路线“/”下的所有内容都必须经过它,但它不起作用:

.when('/', {    // doesn't work
controller: 'appController',
resolve: { 'AppData': ['initPageService', function (initPageService) { return initPageService.init("something/initpage"); }] }
})

我不知道最终将使用此 Controller 的所有路由,并且我不想关心它。有没有一种方法可以专门解析数据并将其注入(inject)到 Controller 中,无论在何处调用它?提前致谢。

最佳答案

您可以让 appController 成为所有其他 Controller 的父 Controller 。

与此类似的东西:

<html ng-controller="appController">

在 appController 内部,您可以有一个自动执行的匿名函数调用,它可以为所有其他 Controller 执行预加载操作。

如果您想限制某些子 Controller 行为,请在 appController 中使用作用域变量来调节它们。

这是使用自定义事件告诉应用程序其他部分“解决”的经典案例。 JS 是异步的 - 您应该监视属性,或者监视 rootScope 上的事件,或者使用 Promise 来处理相关任务。

关于javascript - AngularJS - 有没有一种方法可以在不使用路由的情况下将数据注入(inject) Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29889040/

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