【发布时间】:2013-10-07 05:40:26
【问题描述】:
我正在使用 Backbone、require 和 jQuery mobile 作为技术堆栈构建一个 HTML5 移动应用程序。该应用程序与后端 Web 服务等的连接非常流畅。 要在页面之间进行更改,我使用 jQuery changePage。 为了实例化 Backbone 视图,我使用以下策略:
$( document ).delegate("#card-delivery-address", "pageshow", function(){
require(["js/views/cardDeliveryAddressViews.js" ], function(cardDeliveryAddressViews) {
new cardDeliveryAddressViews();
});
});
$.mobile.changePage('deliveryAddress.html') => 改变当前 使用 jquery mobile 的页面
当在 #card-delivery-address 上触发名为“pageshow”的事件时 (这意味着我的页面已插入 DOM 并成功 render) => 创建主干视图并将 $el 绑定到 现有的 DOM 并使用主干控制 DOM 事件 意见。
- 要在视图之间传递数据和实例,我们使用 window.tempData 我们在其中放置上下文数据的全局变量,以便新的 view 会知道该怎么做。
单向导航是成功的,假设我来自 view1 --> view2 (with tempData) 然后来自 view2 --> view 3 (覆盖相同的 tempData)。现在,这是我的问题:如果我们想从视图 3-> 视图 2 返回,我们将需要用于初始化和渲染视图 2 的 tmpData 内容。当我们想返回视图 1 时也是如此.
注意:我没有使用骨干路由器,但如果这能解决我的问题,我可以改用它。
各位有什么想法吗?
【问题讨论】:
-
我曾经覆盖 Backbone.history.navigate,所以它在导航时使用 HTML5 replaceState 推送状态对象。我会通过要求视图提供他们想要保留的任何信息来组装这个对象,分层。在路由事件中,我会从历史 API 中获取此状态对象并将其“返回”给视图。花了几天的时间,但效果非常好。
-
我做了类似的事情,但与 Backbone 无关。它在 jquery 之上工作并使用 HTML 5 历史事件。它也很好用
标签: jquery jquery-mobile backbone.js backbone-views backbone-routing