在使用Backbone组织的地图应用程序中,主视图显示地图上的路径。该视图需要在首次加载时从服务器获取的数据,这需要时间(~500ms)。
每个路径都有一个唯一的URL设置路由/导航。
当用户点击此网址的外部链接并到达应用程序时,地图视图无法立即显示该路径;它需要先获取数据。
为了做到这一点,我已经设置了一个非常复杂/复杂的过程(如下所述),但我想知道是否有更好/规范的方法来做到这一点?
到目前为止,这是我的解决方案:
优点
限制
编辑:或者我的问题是我想要同步页面上的所有内容而我不应该这样做。在页面上有三个视图以不同的方式呈现相同的信息,只有地图视图存在需要数据进行渲染的问题。
所以它是地图视图的问题,而不是每个人的其他问题,所以也许正确的方法是让所有这些调度业务都在地图视图中发生,并且让其他观点尽快完成他们的工作......?
答案 0 :(得分:0)
创建单独的对象以跨多个视图管理复杂逻辑并不错。但是没有必要让它看起来。您可以使用普通JS对象作为某种控制器/介体。
此外,我认为在这种情况下使用promises更好(例如$.Deferred())。它们使应用程序中的异步逻辑更容易控制,例如,您可以执行以下操作:
$.when(prepareMapView, loadPathData).done(showPathToView);
答案 1 :(得分:0)
this.yourMapModel.fetch({
success: function(model, response, options){
//"your code after successful return from url"
},error:function(model, response, options){
//"your code after error"
});