Immer Fehler auf $.mobile.changePage(): Uncaught TypeError: Cannot call method 'trigger', undefined
Ich habe eine JQM-apps, und ich bin die Einbeziehung Rückgrat.
Seit meinem ersten javascript-code ist riesig, ich bin nur das extrahieren, was ich glaube, ist problematisch.
Ich bin nach den Tipps und nennt Schritte, die hier zitiert:
- jqm-config.js von http://coenraets.org/blog/2012/03/using-backbone-js-with-jquery-mobile/
- http://jquerymobile.com/test/docs/pages/backbone-require.html
Ich habe ein großes problem, und dies ist das Verhalten, das problem kommt von diesem code:
var r = Backbone.Router.extend
router: ...
"page": "pageDisplay"
...
pageDisplay: function(){
c = new AView(); //Backbone.View ...fetch() data...
$(c.el).page(); //Call to JQM to add its extra stuff; seems done correctly
$.mobile.changePage( "#" + c.id, {changeHash: false}); //line 50
}
Wenn die links von <a href="#page" >
komme ich wie erwartet auf die
Seite "#Seite" richtig verarbeitet werden. Aber einmal dort, wenn ich auf eine refresh
, die indirekt wieder aufbereitet durch den gleichen router der Regel ich am Ende mit der folgenden Fehlermeldung:
Uncaught TypeError: Cannot call method 'trigger' undefined
Ich habe die jquery mobile-Entwicklung-code und das beobachtet:
//JQM1.1.2 - Zeile #3772 Zeigen eine bestimmte Seite in der Seiten-container.
$.mobile.changePage = function( toPage, options ) { if ( isPageTransitioning ) { pageTransitionQueue.unshift(arguments ); return; } var settings = $.extend( {}, $.mobile.changePage.defaults, options); //Make sure we have a pageContainer to work with. settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; //Make sure we have a fromPage. settings.fromPage = settings.fromPage || $.mobile.activePage; //Line #3788 var mpc = settings.pageContainer, //Line #3789 pbcEvent = new $.Event("pagebeforechange" ), triggerData = { toPage: toPage, options: settings }; //Let listeners know we're about to change the current page. mpc.trigger( pbcEvent, triggerData ); //Line #3794
Den Uncaught TypeError
ist hervorgerufen durch Zeile #3794, weil mpc
ist undefined
.
Also, von JQM, In der Chrome inspector, ich sehe auch, dass settings.fromPage
ist undefined
und settings.pageContainer
ist undefined
. Ich irgendwie vorstellen, dass JQM kann nicht machen, eine Annahme, die auf der fromPage, und daher kann nicht gehen, auf meine aktualisieren. Alle Optionen, die ich habe versucht, auf die $mobile.changePage() nicht erfolgreich. Ich bin aus Ideen heraus.
UPDATE/Online-Website, die mit dem minimum, das problem zu reproduzieren:
apartindex, der Zugriff auf die website mit dem bug
Jede Hilfe wird geschätzt.
Keine Ahnung... Ist es möglich einen link zu dem live-Projekt?
Ich sollte in der Lage sein, zu entfernen alot von Sachen und legte es auf das web, bis morgen, stay tuned.
ok, die website und deren problem wird im folgenden zeitweise website: link. Ich hoffe, kann helfen, Rückmeldungen.
Hum... scheint im Zusammenhang zu einer Abhängigkeit von google analytics... ich bin in Sie suchen. Ich meine google-analytics-in Kommentar und es löst das problem. Ich bin gerade aus meinem Kopf, es ist nicht nur das. Und warum ?
InformationsquelleAutor Mathias-Dev | 2013-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
dextoInit
Funktion zum aufrufen der router-code aufgerufen wird, in$(document).ready()
die nicht garantieren, dass die jQuery-mobile-Seite hat eigentlich schon erfolgreich eingerichtet. Aber der router code ruft$.mobile.changePage
das hängt davon ab, jQuery Mobile initialisiert werden.Setzen es in die
mobileinit
oderpageinit
funktionieren sollte.(Leider kann ich nicht den code ändern und testen es einfach.)
Ich habe versucht, viele Dinge, aber wieder ohne Erfolg. Die Abhängigkeiten scheint ok, so gesehen auf der Registerkarte "Netzwerk" aus Chrom-Inspektor. Ich bin die Bindung auf mobileinit, vorgeschlagen hat. Ich hörte Bindung auf pageinit, Ursache, die $.mobile. Einstellungen müssen gesetzt werden, bevor eine erste pageinit. Arghhh, ich habe keine Haare mehr. Den neuen code wieder auf die Seite apartindex.com.
wird ausgelöst, bevor die Seite aufgebaut ist, also würde es Sinn machen, wenn es nicht funktioniert. Haben Sie versucht, indem Sie die Einstellungen und die
Backbone.history.start();
inpageinit
?Ich habe versucht mit
pageinit
, aber es wurde zweimal genannt, und aus meiner Forschung, dies geschieht, wenn Sie mehr als eine Seite geladen, auf einmal. Ich habe nicht dieses Szenario, aber habe ich versucht zu vermeiden diese zweite Anomalie. Da ich so viele Veränderungen, ich werde versuchen, wieder mit einige anderen Konfiguration derpageinit
.InformationsquelleAutor Matt Zeunert
Obwohl, dieser fix it für den moment, hat es Nachteile. Siehe unten.
Registrieren, um
pageinit
hat eine seltsame Wirkung wird feuerte zweimal. Ich sehe, dass 2 Knoten wurden Hinzugefügt, um den Dom: die Standard - "laden"jquery mobile div
(bezogen auf pageinit:1), und meinedata-role page
(pageinit:2). Also auf ein "refresh browser klicken Sie auf", meine situation lässt mich warten für eine erstepageinit
, erstellen eine unerwartete jquery mobile dom-element (eine Standard-Seite erstellt, um die Anzeige des wartenden JQM Kreis-animation), die Auslöser der router Schöpfung, und ermöglicht das Rückgrat.Geschichte nennen, die befasst sich dann mit "meinem" home-Seite. Die zweitepageinit
stören Sie nicht die Einstellungen, da führe ich es nur einmal.Ich bin wirklich enttäuscht von diesem setup. Ich lasse diese Frage für jetzt, denn es macht die Arbeit.
InformationsquelleAutor Mathias-Dev
Fand ich die Quelle des Problems zu sein jquery-mobile-version 1.3.0. Wenn ich zurückgreifen, um entweder JSM 1.2.0 oder 1.2.1, "Uncaught TypeError: Cannot call method "trigger " undefined" - problem geht Weg.
BTW, ich bin nicht mit Rückgrat.
InformationsquelleAutor Fish Taco
Hatte ich behoben, dieses problem mithilfe der Methode append(), aber nicht html()
InformationsquelleAutor Alex Joe
Konnte ich dieses Problem beheben, indem ändern der Seite der Daten-Eigenschaft von "data-role" , "Daten-mobile-Seite", was auf die in-line-4042 von jqm 1.3.2
InformationsquelleAutor Seth
Einstellung
In Ihre jquery-mobile-config-Datei einige Platz wie:
Kann helfen.
InformationsquelleAutor Wenbin