2013-10-27 45 views
2

我有一個用Ember.js寫的網站。導航基於具有#號的網址。如何讓jQuery Mobile停止破解Ember.js網站?

我已經包含了jQuery Mobile。我也有jQuery標準。

jQuery是好的,但是當我包含jQuery Mobile的時候會發生奇怪的事情。

#號從網址中刪除,我的h1標籤被文本「加載」替換。

如何使jQuery Mobile與Ember.js網站很好地配合使用?

更新:

我已經創建出描述的問題的演示。

Ember.js單獨

這裏:

http://quizz.pl/ffs/without-jquerymobile

你必須使用Ember.js 1.1.2演示頁。當您單擊「打開其他頁面」會被重定向到:

http://quizz.pl/ffs/without-jquerymobile/#/otherpage

你可以看到消息「這是其他網頁」。這沒關係。/otherpage是頁面的正確路由,消息來自此路由的模板。

Ember.js + jQuery Mobile的

在這裏:

http://quizz.pl/ffs/with-jquerymobile/

唯一改變的事情是,我已經添加jquery.mobile,1.3.2.min.js 。

a)打開網站後會出現空白頁面。這是錯誤的

此外,當您嘗試打開otherpage路線:

http://quizz.pl/ffs/without-jquerymobile/#/otherpage

您將被重定向到:

http://quizz.pl/otherpage

B),這也是錯誤的,因爲你不應該不會被重定向

c)頁面也是空的,所以它也是錯誤的

任何人都可以幫忙嗎?

+0

我有完全相同的問題!從來沒有想過它。我嘗試在Ember Discuss,這裏以及StackOverflow JS聊天室中發帖。我得到的答覆是拋出JQM並使用別的東西。我做的。如果有人能提供幫助,那將會很好。 http://stackoverflow.com/questions/18979150/emberjs-and-jquery-mobile-gives-blank-grey-page –

+0

@stevanity是的,它似乎是同樣的問題。你能創建一個pastebin,或者jsfiddle來重新創建這個問題嗎? –

+0

我實際上正在構建一個'Rhodes'應用程序。所以它不可能在jsfiddle或jsbin上重新創建它。 (據我所知)。 –

回答

3

取決於你的目標受衆,你可以做幾件事情:

1。)如果使用的是支持歷史記錄http://caniuse.com/history現代瀏覽器,那麼你可以使其不與jQuery Mobile的衝突改變Ember的路由機制不使用哈希了,像這樣:

App.Router.reopen({ 
    location: 'history' 
}); 

2)你能砍jquery mobile並禁用他們的內部頁面導航。所以,我不使用Jquery移動版,所以如果我打破了他們想要使用的代碼的某些部分,請避免對我大喊大叫,但這基本上起作用。所以我們解除綁定代碼的導航部分,並劫持他們的頁面更​​改事件。此外,我注入了應用程序的應用程序到jquery移動盒並隱藏加載div。

http://emberjs.jsbin.com/Ubatiri/2/edit

App = Ember.Application.create({ 
    rootElement: '.ui-page', 

    ready: function(){ 
    // 
    $.mobile.window.unbind({ 
     "popstate.history": $.proxy(this.popstate, this), 
    "hashchange.history": $.proxy(this.hashchange, this) 
}); 

    $.mobile.changePage = function(){console.log('die jquery mobile navigation');}; 

    $('.ui-loader').hide(); 
    } 
}); 

每運算,這些步驟是有幫助的,以及用於停用

$(document).bind("mobileinit", function() { 
    $.mobile.ajaxEnabled = false; 
    $.mobile.linkBindingEnabled = false; 
    $.mobile.hashListeningEnabled = false; 
    $.mobile.pushStateEnabled = false; 
    $.mobile.changePage.defaults.changeHash = false; 
}); 
+0

它似乎是一個好東西。我會盡快檢查。 thx –

+1

太棒了!我已經使用了你的代碼,當我刷新URL時仍然存在一些問題,但是我修復了它,我會發布它。 Thx –

+0

使用類似技術的另一個示例:http://blog.mist.io/post/78757774060/building-a-mobile-friendly-web-app-using-ember-js-and – givanse

1
$(document).bind("mobileinit", function() { 
$.mobile.ajaxEnabled = false; 
$.mobile.linkBindingEnabled = false; 
$.mobile.hashListeningEnabled = false; 
$.mobile.pushStateEnabled = false; 
$.mobile.changePage.defaults.changeHash = false; 

});