民間 我正在使用backbonejs(0.9)與最新的jQuery Mobile(1.3)。我正在使用WebSql來存儲本地數據。在加載主頁時,我從本地數據庫執行查詢,並使用jQuery Deferred在之後呈現內容,查詢成功。不幸的是,jQuery的移動頁腳沒有得到「增強」。jquery移動頁腳無法正確呈現動態內容
的觀點我Haml的模板很簡單,看起來如下:
%div{'data-role' => 'header'}
%div{'data-role' => 'navbar', 'data-iconpos' => 'top'}
%ul
%li
%a.ui-btn-active.ui-state-persist{'href' =>''}ATAB
%li
%a{'href' =>'#btab'}BTAB
%div{'data-role' => 'content'}
%div{'data-role' => 'footer', 'data-position' => 'fixed'}
%a{'data-icon' => 'plus', 'href' => '#a_link'}A link
我Backbonejs圖如下所示(我用的CoffeeScript)。路由器已經在router.templates和txnsLoadedPromise緩存的模板被「解決」一旦從的WebSQL數據庫記錄被載入:
window.HomeView = class HomeView extends Backbone.View
initialize: (options) ->
@template = Handlebars.compile(router.templates['/home/home'])
render:() ->
txnsLoadedPromise.then(
@renderDynamic
)
return this
renderDynamic:() =>
if (transactions.length > 0)
#generate content dynamically here and put in result
result = {}
$(@el).html(@template(result))
$('[data-role="header"]').trigger('create')
$('[data-role="footer"]').trigger('create')
這是我的看法的外觀:
我曾嘗試使用「刷新」而不是在頁腳的觸發器調用中創建,但它不起作用。奇怪的是,標題刷新正常工作。另外,如果我刪除了頁面的動態特性(意思是直接渲染視圖而不是解決何時承諾,那麼它工作正常(這是預期的)。
只是爲了完整性,以下是我的路由器代碼它是有關)
window.MyRouter = class MyRouter extends Backbone.Router
routes:
"": "home"
initialize: (options) ->
#code for preloading view templates
templates: {}
home:() ->
PageUtil.changePage new HomeView({templateKey: '/home/home'})
而且changePage方法PageUtil類:
window.PageUtil = class PageUtil
@changePage: (view, overrideOptions={}, role='page') ->
defaultOptions={transition: 'slide', reverse: false}
options = $.extend(defaultOptions, overrideOptions)
view.render();
$('body').append($(view.el));
if window.curentView
console.log 'removing view: ', currentView
window.currentView.remove()
window.currentView = view
$.mobile.changePage(view.$el, options);
任何想法
感謝Gajotres!我實際上並不需要增強頁眉或頁腳,因爲我不會動態地更改它們。我強化標題的唯一原因是因爲在頁面渲染後我的渲染,它可能被搞砸了。讓我閱讀文章,並回顧他們是否解決問題。 – serverman 2013-03-05 15:41:12
頁面創建不適合我。我通過黑客修復它(向頁腳添加正確的一組類)。由於我從你的文章中學到了一些東西,因此我將你的答案標記爲正確:) – serverman 2013-03-06 14:56:09