javascript - object literal and Sys.WebForms.PageRequestManager.getInstance().add_endRequest issue -
what i've got asp.net masterpage/contentpage, contentpage utilizes updatepanel updatemode set "conditional". contentpage multiview has 3 views: setup, confirm, , complete. i've got navigation buttons when clicked, go server, need , update updatepanel can come back. problem lies in javascript.
i have following global object literal named page
:
page = { panel : undefined, currentview: undefined, buttons : { : undefined, cont : undefined }, views : { setup : {}, confirm : {}, complete : {} } };
page.init()
function looks this:
page.init = function() { console.log("page.init() fired"); this.panel = $('div[id$="panel_page"]'); this.currentview = this.panel.find('input[id$="hidden_currentview"]').val(); this.buttons.all = this.panel.find('input[type="submit"]'); this.buttons.cont = this.panel.find('input[id$="button_continue"]'); this.buttons.all.click(function() { page.panel.hide(); }); switch (this.currentview) { case "confirm" : this.views.confirm.init(); break; case "complete" : this.views.complete.init(); break; default : this.views.setup.init(); break; } };
, last, not least, gets kicked off by:
// fire events on initial page load. page.init(); // fire events partial postbacks. sys.webforms.pagerequestmanager.getinstance().add_endrequest(page.init);
issue when first fires page.init()
great, however, when click button throws error of: uncaught typeerror: cannot set property 'all' of undefined. i've tried figure out, i'm @ loss. seems though happens any nested object literal off of root of page
. immediate properties page.panel
work fine, need access page.buttons.all
or page.views.setup
, throws error. have never seen before.
any ideas out there?
use getter panel property. seeing else appears property of panel should - might losing reference panel during postback, instead of getting object once, every time:
get_panel: function() { return $get("panel_page"); }
again, if have this.panel = $get(myelement) , partial page update destroys node returned this.panel when created object initially, this.panel become undefined. use getter.
hope helps - happy coding.
edit:
actually - @ again, you'll want use getters of properties instead of relying on get_panel().find(..) currentview, example, i'd getter there:
get_currentview: function() { return $get("hidden_currentview", this.get_panel()); }
b
Comments
Post a Comment