I have an Object that handles all of my page events, I decided to go that
way instead of just writing a bunch of functions to help save on GC. I am
having a bit of a problem though, it seems that when an event listener is
fired there is no way to set scope. So, I have my Object "PageHandler"
inside of it there is a function "pageChange", that is to be called
whenever the visualization table gets its page changed, so I can re-setup
actions on the items in the table. Everything was seemingly working fine
until I needed to switch the page from just using a Table type of chart, to
using a Dashboard, so that my users could search the table. Now that I have
it setup as a Dashboard, I have my "ready" event setup to run a function
that attaches the rest of the event functions on the table itself, since
you can't access a Wrappers chart until after the dashboard ready event.
That is just written as a standalone function, inside of which I
instantiate my new Object and attach the page event, like so...
function setup() {
page = new PageHandler();
google.visualization.events.addListener(page.getChart(), 'page',
page.pageChange);
}
That is an extremely simplistic version of the function, but you get the
idea. The problem comes in pageChange, there is no scope. Here is a
very...very simple snippet that will represent this...
var PageHandler = function() { }
PageHandler.prototype = {
getChart: function() {
return dash.dashboardParts.mainTable.getChart();
},
pageChange: function() {
console.log(this);
}
}
now dash is my object, and dashboardParts.mainTable is new
google.visualization.ChartWrapper({...}); so I am using getChart on it to
get the underlying table chart. The problem is, inside pageChange when I
console.log(this); it is logging undefined.
Is there any possible way to allow for proper scoping of the functions
getting run when the event handler is called? I have had to do some pretty
terrible workarounds that I really do not want to ever have in a production
environment, but I have to have scope somehow. Any help would be greatly
appreciated. Thank you.
--
You received this message because you are subscribed to the Google Groups
"Google Visualization API" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-visualization-api.
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-visualization-api/89358907-4bb8-4018-b797-39dd51b5dde3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.