Pass parameters from one custom page to another
-
Hi All,
I have created two custom pages. Everything works fine (both render properly and may be accessed).
I wish to force page change from the first page to the second page (lets say upon button press handled by the first page js), and pass several parameters to the second page's js code.
The second part of the question (passing data from the server side to the second page upon launch is simple: render('client/plugins/mycoolpage', mycoolparams);.
I can't figure out the first part. Is there a function like:
ajaxify.go('mycoolpage', mycoolparams) that will pass the parameters from the client to the render function above?Apology in advance for my ignorance. I am still learning nodebb.
Thank you!
JJ -
One option, if you listen to
action:ajaxify.dataLoaded
, any changes to thedata
parameter are passed to the template render. For example, running this script below will change the first category toTEST
let myNewCategory = 'TEST' $(window).one('action:ajaxify.dataLoaded', (e, params) => { if (params.data && params.data.categories) params.data.categories[0].name = myNewCategory }) ajaxify.go('categories')
-
Thank you @yariplus .
Not sure I understand, my apology.
I wanted to store a parameter using the first page's js, and then force page change to the second page. Then have the second page's js code access said parameter.To that end, in your example, do I set
- let myNewCategory = 'TEST'
- ajaxify.go('categories')
In the first page's js code, and:
$(window).one('action:ajaxify.dataLoaded', (e, params) => {
if (params.data && params.data.categories) params.data.categories[0].name = myNewCategory
})On the second page js code?
I believe myNewCategory will be deleted on the page change (I tried that...). Again, apology for my ignorance.
JJ.
-
@jjsagan No, everything would go on the first page. The second page's js would just read
ajaxify.data.yourvariable
I'm assuming you want to both render the variables in the second page's template, and use them in the second page's JS. If you just want to read them with JS, passing them in the url as baris says above is the easier option.