Backbone.js und jQueryMobile routing ohne hack oder anderen router
Ich bin mit backbone.js (0.5.3) mit JQueryMobile (1.0 beta 2). Ich weiß, es gibt routing-Konflikte bei der Verwendung dieser Bibliotheken zusammen, und ich würde gerne wissen, ob es eine Lösung gibt, Sie zu nutzen :
- ohne das eindringen in das jquery-mobile-source-code, wie beschrieben, in Ben Nolans Töpfe : http://bennolan.com/2010/11/23/backbone-and-jquery-mobile.html
- und ohne mit einem anderen router wie jquerymobile-router (es sei denn, es gibt keine andere Möglichkeit...)
Mein problem ist ziemlich ähnlich zu der in diesem post beschrieben : jquery-mobile backbone.js routing
Als wenn ich einen Antrag stellen, das Rückgrat render
code der entsprechenden backbone-view wird ausgelöst, bevor die neue jquery-Seite vollständig geladen ist. Ich bin versucht, um meinen html-code generiert in der $(".ui-page-active")
DOM-element, um das Ziel der Seite, die generiert wird, von jQueryMobile (oder die Seite, die ist "aktiviert") :
MyView = Backbone.View.extend({
el: $(".ui-page-active")
render: function(){
console.log(el)
}
});
Aber die el
- Attribut leer ist, wenn der render-Methode aufgerufen wird, da jquery mobile noch nicht erbracht hat, den dom...
Vielen Dank für jede Hilfe!!!
Update
Addy Osmani scheint die Antwort auf meine Frage 🙂 aber es wird für den nächsten Teil seiner (großen) tutorial :
http://msdn.microsoft.com/en-us/scriptjunkie/hh377172.aspx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, die Lösung ist das deaktivieren von jQuery Mobile-ajax-loading-Funktion, und rufen Sie die
$.mobile.changePage
Methode manuell.HTML-Seite :
Dann, wenn eine neue route ausgelöst wird, habe ich als erstes meine neue "jQuery Seite die Leinwand" in den Backbone-View-Konstruktor, hängen Sie an das HTML-Dokument
body
und meineel
view-element an dieser neuendiv
:Rückgrat.Ansicht
Und in der
render
Methode :Funktioniert wie ein Charme und ohne unnötige hacks 🙂
Hier ist mein voller Backbone-Ansicht angezeigt, wenn es kann jemand helfen :
Kann dies ein wenig von einem longshot, da ich keine Möglichkeit habe es zu testen, aber versuchen Sie die Erweiterung Rückgrat der Geschichte, und haben es zu hören Erstellungs-Ereignis, bevor Sie tatsächlich Schießen aus dem code. So..
Könnte es tun, oder Sie wenigstens auf dem richtigen Weg hoffe ich.
handler.callback(fragment)
wird nie aufgerufen... es scheint, dasspagecreate
- Ereignis nicht ausgelöst wird, bis Rückgrat hat ausgeführt, der Rückruf (die entsprechende Funktion im router). In diesem Fall, jQuery Wartet, Rückgrat, Rückgrat wartet auf jQuery, und es ist ein deadlock...Mit jquery 1.2.0, deaktivieren ajax und linkBinding
nach, die mit normalen Backbone-Strecken, können Sie link ein #id mit