gpt4 book ai didi

angularjs - 两个 Controller 依赖于异步返回的相同数据

转载 作者:行者123 更新时间:2023-12-01 13:50:34 24 4
gpt4 key购买 nike

有一个应用程序允许用户创建或加入房间。因此,RoomsListController 显示房间,RoomDetailsController 显示特定房间内的内容和事件控件。当然,RoomService 提供了 getRooms()(异步)方法。

现在,让两个 Controller 等待 RoomService.getRooms() 返回的相同数据的 Angular 方法是什么?

详细信息:

  • 应用程序中有身份验证,房间列表取决于用户 ID。所以在应用程序启动时调用 RoomService.getRooms() 不是一个选项
  • RoomDetailsController 并不总是请求房间列表。只要通过 $stateParams 提供的房间存在并且处于事件状态,它就会被简单地显示出来。如果没有,则会有一些逻辑将用户引导到另一个房间(此处需要房间列表)或显示一条消息,指出没有可用的房间,也许是时候创建一个房间了。
  • 假设 getRooms() 对服务器来说是一项繁重的操作,当客户端上的相同数据可以重复使用时,不希望获取它两次。
  • 希望逻辑不依赖于首先执行哪个 Controller 功能,因为这可能会受到模板中布局更新的影响

最佳答案

看看route resolve promises .

您将在路由解析之前调用异步方法:

// in your config
$routeProvider.when('/your-route', {
resolve: {
roomData: function(RoomService) {
return RoomService.getRooms();
}
}
}

// RoomsListController
function(roomData) {
// do something with roomData
}

// RoomDetailsController
function(roomData) {
// do something with roomData
}

这样,就 Controller 而言,数据甚至在路由加载之前就已经存在。

您已经谈到了一个关键问题是应用程序......也就是说,为以应用程序可以使用的方式组合的数据创建单一真实来源。

有很多模式可以解决这个问题,但我建议先看看路由解析 promise ,然后再从那里扩展。它会变得非常复杂。

关于angularjs - 两个 Controller 依赖于异步返回的相同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32041663/

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