Skip to content

Commit 6aa8c8f

Browse files
committed
- Added "fromPage" option to changePage(). This used to be in there before the navigation re-work, I just added it back in.
- Added "dataUrl" option to changePage(). This allows a caller to specify a page element to change to, but specify an alternate URL for location display purposes. This is useful for dynamic applications that re-use and over-write existing page content to avoid overwhelming the DOM. - Renamed the "beforechangepage" and "changepage" events to "pagebeforechange" and "pagechange" respectively. This was done to match the page widget naming of its notifications. Left the triggers for the old events in place but with DEPRECATED comments. - Renamed the properties of the data object passed to the page events.
1 parent 701b381 commit 6aa8c8f

File tree

1 file changed

+27
-11
lines changed

1 file changed

+27
-11
lines changed

js/jquery.mobile.navigation.js

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -831,18 +831,28 @@
831831
// Make sure we have a pageContainer to work with.
832832
settings.pageContainer = settings.pageContainer || $.mobile.pageContainer;
833833

834+
// Make sure we have a fromPage.
835+
settings.fromPage = settings.fromPage || $.mobile.activePage;
836+
834837
var mpc = settings.pageContainer,
835-
bcpEvent = new $.Event( "beforechangepage" ),
836-
url = toPage;
838+
pbcEvent = new $.Event( "pagebeforechange" ),
839+
triggerData = { toPage: toPage, options: settings };
837840

838841
// Let listeners know we're about to change the current page.
839-
mpc.trigger( bcpEvent, { url: url, settings: settings } );
842+
mpc.trigger( pbcEvent, triggerData );
843+
844+
mpc.trigger( "beforechangepage", triggerData ); // XXX: DEPRECATED for 1.0
840845

841846
// If the default behavior is prevented, stop here!
842-
if( bcpEvent.isDefaultPrevented() ){
847+
if( pbcEvent.isDefaultPrevented() ){
843848
return;
844849
}
845-
850+
851+
// We allow "pagebeforechange" observers to modify the toPage in the trigger
852+
// data to allow for redirects. Make sure our toPage is updated.
853+
854+
toPage = triggerData.toPage;
855+
846856
// Set the isPageTransitioning flag to prevent any requests from
847857
// entering this method while we are in the midst of loading a page
848858
// or transitioning.
@@ -869,15 +879,16 @@
869879

870880
//release transition lock so navigation is free again
871881
releasePageTransitionLock();
872-
settings.pageContainer.trigger("changepagefailed");
882+
settings.pageContainer.trigger( "pagechangefailed", triggerData );
883+
settings.pageContainer.trigger( "changepagefailed", triggerData ); // XXX: DEPRECATED for 1.0
873884
});
874885
return;
875886
}
876887

877888
// The caller passed us a real page DOM element. Update our
878889
// internal state and then trigger a transition to the page.
879-
var fromPage = $.mobile.activePage,
880-
url = toPage.jqmData( "url" ),
890+
var fromPage = settings.fromPage,
891+
url = ( settings.dataUrl && path.convertUrlToDataUrl( settings.dataUrl ) ) || toPage.jqmData( "url" ),
881892
// The pageUrl var is usually the same as url, except when url is obscured as a dialog url. pageUrl always contains the file path
882893
pageUrl = url,
883894
fileUrl = path.getFilePath( url ),
@@ -895,7 +906,8 @@
895906
// to the same page.
896907
if( fromPage && fromPage[0] === toPage[0] ) {
897908
isPageTransitioning = false;
898-
mpc.trigger( "changepage" );
909+
mpc.trigger( "pagechange", triggerData );
910+
mpc.trigger( "changepage", triggerData ); // XXX: DEPRECATED for 1.0
899911
return;
900912
}
901913

@@ -982,7 +994,9 @@
982994
releasePageTransitionLock();
983995

984996
// Let listeners know we're all done changing the current page.
985-
mpc.trigger( "changepage" );
997+
mpc.trigger( "pagechange", triggerData );
998+
999+
mpc.trigger( "changepage", triggerData ); // XXX: DEPRECATED for 1.0
9861000
});
9871001
};
9881002

@@ -994,7 +1008,9 @@
9941008
role: undefined, // By default we rely on the role defined by the @data-role attribute.
9951009
duplicateCachedPage: undefined,
9961010
pageContainer: undefined,
997-
showLoadMsg: true //loading message shows by default when pages are being fetched during changePage
1011+
showLoadMsg: true, //loading message shows by default when pages are being fetched during changePage
1012+
dataUrl: undefined,
1013+
fromPage: undefined
9981014
};
9991015

10001016
/* Event Bindings - hashchange, submit, and click */

0 commit comments

Comments
 (0)