【发布时间】:2014-03-21 09:05:22
【问题描述】:
在使用 Backbone 组织的地图应用程序中,主视图显示地图上的路径。此视图需要在首次加载时从服务器获取数据,这需要时间(约 500 毫秒)。
每条路径都有一个唯一的 url,其中设置了路由/导航。
当用户点击该url的外部链接并到达应用程序时,地图视图无法立即显示路径;它需要先获取数据。
我已经设置了一个非常复杂/令人费解的过程来执行此操作(如下所述),但我想知道是否有更好/规范的方法来执行此操作?
到目前为止,这是我的解决方案:
- 一般来说
- 有一个名为“dispatch”的全局“视图”并不是真正的视图,而是用于存储各种其他视图的状态
- 准备就绪时,地图视图会触发一个事件进行调度,以便它知道地图已准备就绪(“mapIsReady”)
- 加载新网址时
- 在新的 url 上,路由对象立即更新模型,然后触发事件调度,本质上是“尽可能更新路径”
- 收到此消息后,dispatch 使用 setTimeout 监视地图视图(它自己存储)的状态
- 当地图视图准备就绪时,调度触发模型上的“更新”事件,告诉每个视图显示它
优势
- 有效!
- 视图之间不直接调用对方的方法,一切都是通过事件来完成的
限制
- 调度“视图”实际上根本不是视图
- 事件链可能有点复杂,难以跟踪......并在未来进行调试
- setTimeout 感觉不对
编辑:或者我的问题是我想同步页面上的所有内容,而我不应该这样做。页面上存在三个视图以不同的方式渲染相同的信息,只有地图视图存在渲染需要数据的问题。
所以这是地图视图的问题,而不是其他所有人的问题,所以也许正确的方法是让所有这些调度业务发生在地图视图内,并让其他视图尽快完成他们的工作......?
【问题讨论】:
-
如果你放一些代码会更清楚。
-
您的地图视图正在从某个地方获取数据,好吗?是来自第三方吗?您正在调用该方法。 (可能是 REST)通过模型..您可以为它使用成功和错误回调函数。因此,当地图数据获取返回成功时,您可以在成功回调之后处理。或者如果错误在错误回调中处理它
标签: backbone.js backbone-views backbone-events