Thank you Olmo for your time and patience; - Looking at your illustration, I think that if I use my Tree Class as a base, then treat the other asynch Classes as crelative to that base, it will clear up my Class hierarchy confusion
- as you point out, the docs show that I needed to include 'this' in the .pass, rather than trying to bind the inner function - and my apologies for not tidying up the formatting after I'd worked out how to define my problem On Dec 2, 5:10 pm, Olmo Maldonado <[email protected]> wrote: > Passing functions is not usually what one does, you _can_ pass a callback > that signals the parent class to do something else but you usually let your > children or composed classes do what they need to do. > > Kind of like this: > > Parent.askChildrenForTheirReportCards(); == > Parent.getChildren().map(function(child){ return child.getReportCard(); }); > > If the action getReportCard is heavy, or async you would have this kind of > API: > > Parent.askChildrenToWorkOnHomework(); == > Parent.getChildren().each(function(child){ > child.workOnHomeWork(this.onChildFinishedHomework); }, *this)*; > > Notice that I passed *, this)* to the Array.each method. That's how you > bind another function to another context (the parent's context, or this). > You can also do that with .pass(['first argument', 'second argument'], *this > *); Take a look at the documentation. > > So again, you don't pass around functions for the children to do. You > usually define that function in the child (it's as if the child needed to > be told exactly what to do by the parent -- it wouldn't be fun and it'd be > condescending). > > -- > > If I may comment on your code. You should use real words in your variables > and method names. > > var b to var tab; > var ff = who knows what. > getassetG isn't using the proper camelCase. > > and so on. > > Here's a style guide that might > help:https://github.com/mootools/mootools-core/wiki/syntax-and-coding-styl... > > Here's > another:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml > > It's important for you, and for *us* that you have a consistent style. > > On Fri, Dec 2, 2011 at 10:12 AM, davepilbeam > <[email protected]>wrote: > > > > > > > > > Hi everyone, > > > I split my (working fine) UI widget up into separate Classes for > > reusability. Some of these Classes load on demand but still need to > > pass info on to their sibling Classes. > > > I ended up with: > > a Tab Class containing a Tree Class that asks for a JS Asset that > > loads an Uploader Class that on completion refers back to the Tab > > Class > > > But .bind or no .bind, by the end of my increasingly desperate 'pass > > the parcel' nested functions, I've still lost my 'this' > > > What's the best way to properly pass functions across Class to Class > > like this, without storing stuff in global variables? > > > Simple version: http://jsfiddle.net/davepilbeam/YeF8K/ > > > Thanks in advance
