Yeah, sorry to infer that you weren't conforming to Cairngorm. Any chance you could show us how you are using the command callback? I was thinking about doing something like this with eventListeners/dispatchers, observe or changeWatcher, but a responder class would be perfect. Not really sure how to do this.
-TH --- In flexcoders@yahoogroups.com, "JesterXL" <[EMAIL PROTECTED]> wrote: > > Everytime I started to answer, you pretty much identified exactly my > response in your following paragraph. > > For some View's, sure, just bind it to a ModelLocator, and you're good. > Others are too nested, and need context, which forces you to move the logic > higher up to prevent too much coupling. As you say, depends on scope. > > To confirm, I DO use Cairngorm 1 & 2 in my day job & personal work. The > only thing I do differently is Command callbacks, and use my own responder > class. Both of those are extremely minor points, and anyone using Cairngorm > wouldn't immediately recognize those things as non-Cairngorm. > > It all "depends" as you say. > > ----- Original Message ----- > From: "Tim Hoff" <[EMAIL PROTECTED]> > To: <flexcoders@yahoogroups.com> > Sent: Monday, July 10, 2006 4:37 PM > Subject: [flexcoders] Re: Accessing a datagrid inside a different viewstate > > > Ok, after a little more thought. Yes, you had me at encapsulation. > But, "the View's shouldn't know about ModelLocator..", > > :: scratches head ::, but Views should be bound to the ModelLocator > for state? > > I can see the logic working for the small DataProvider question that > started this thread. If a sub-view is small enough this works fine > and the view is easily shared with no reference to the > ModelLocator. However, if the sub-view includes multiple controls > that have different DataProviders; like a DataGrid and several > filter combo boxes, it starts to become redundant. Add to that, the > sub-view may also have states. In the absence of callbacks, you > would also have to pass along binding of the currentState variable > in the sub-view's outer definition. And what about sub-views that > also have sub-views as components; more passed variables? > > As the passed number of ModelLocator references grows inside the sub- > view, you could use the approach that I mentioned, > model="{ModelLocator.getInstance()}". But, this would require the > sub-view to import the ModelLocator for definition of the model > variable anyway. At a point, it gets cumbersome passing the > variables down the list instead of getting them directly. No? > > So, how to justify: "Views are bound to the ModelLocator for state > (including data), but (for loose coupling) should hold no reference > to the ModelLocator." > > I guess this depends on scale. If the sub-view is shared with > several applications, the outer definition of ModelLocator variables > would be necessary, since the different application's ModelLocators > might have different namespaces. However, if the sub-view is just > shared with other views in the same application, the direct approach > seems cleaner. That is unless, you are creating different instances > of the sub-view that require separate bound variables. > > I don't think that there is an absolute here. Both methods have > merit in their own way. Jesse, I know that you have a different > approach altogether, than what is currently supported in Cairngorm. > I'm just trying to get a feel for how other people are doing this in > large-scale applications > > Thanks again, > -TH > > --- In flexcoders@yahoogroups.com, "Tim Hoff" <TimHoff@> wrote: > > > > That makes sense. Especially if the view has several bound > > variables. In that case, model="ModelLocator.getInstance()". At > > the very least, it would make the code more readable. Thanks for > > your point of view. > > > > -TH > > > > --- In flexcoders@yahoogroups.com, "JesterXL" <jesterxl@> wrote: > > > > > > I do it because if I don't, my boss yells at me. Something > about > > > "encapsulation" and "View's shouldn't know about ModelLocator... > > they are > > > too tightly coupled that way." This allows a master View to act > > as an > > > intermediary controller of sorts, and dictate what view knows > > about what. > > > Since our applications are friggin' huge, this allows us to > easily > > share > > > View's throughout. If we shoved ModelLocator in 'em, they > > wouldn't be > > > portable. > > > > > > This worked great in Flex 1.5, so you really should not worry > > about > > > performance in Flex 2... they've optimized this stuff for us so > > all the > > > uber-OOP programmer guys don't shoot themselves in the foot > > performance > > > wise. > > > > > > ----- Original Message ----- > > > From: "Tim Hoff" <TimHoff@> > > > To: <flexcoders@yahoogroups.com> > > > Sent: Monday, July 10, 2006 11:53 AM > > > Subject: [flexcoders] Re: Accessing a datagrid inside a > different > > viewstate > > > > > > > > > Hi Jesse, > > > > > > I started using this approach because it was used in the samples. > > > When I sought to increase the performace of the application, I > > > noticed a little gain when I bound the source directly to the > > > DataProvider. By creating an additional [Bindable] > ArrayCollection > > > and an additonal reference in the outer description of the > > > component, it adds to the resources used and instructions. Do > you > > > think that it makes sense to use the direct binding approach > > instead? > > > > > > Tim > > > > > > --- In flexcoders@yahoogroups.com, "JesterXL" <jesterxl@> wrote: > > > > > > > > If the View's, and all parents have a creationPolicy (in the > case > > > of Containers) to "all", then it will be created. However, you > > > cannot depend on creation order 100%; you'll end up with a race > > > condition somehwere, and pull you're hair out. You're best > > approach > > > is to utilize a ModelLocator approach where you're sub-view, the > > > datagrid, is bound to data inside the view. This data is > exposed > > as > > > a public property that has the bindable tag (can be a > > getter /setter > > > [mutator] also). That way, as soon as the view is created, it > has > > > the data it needs. > > > > > > > > -- pseduo code -- > > > > > > > > // ModelLocator class > > > > > > > > [Bindable] > > > > public var my_array:ArrayCollection; > > > > > > > > // main view > > > > > > > > import ModelLocator; > > > > > > > > <view:MyView someData="{ModelLocator.getInstance > ().my_array}" /> > > > > > > > > // sub view > > > > > > > > public var someData:ArrayCollection; > > > > > > > > <mx:DataGrid dataProvider="{someData}" /> > > > > > > > > Make sense? > > > > > > > > > > > > ----- Original Message ----- > > > > From: Joe Stramel > > > > To: flexcoders@yahoogroups.com > > > > Sent: Monday, July 10, 2006 10:59 AM > > > > Subject: [flexcoders] Accessing a datagrid inside a different > > > viewstate > > > > > > > > > > > > I have a custom component that I created and I have added it to > > > the main application. There is a datagrid inside the custom > > > component. I call the data in the main app, place it in a public > > > ArrayCollection and want the datagrid to display the data. My > > > problem is that the datagrid is in a different viewstate other > than > > > the default view and so I get a null reference error when I try > to > > > populate the datagrid from the main app. Is there a way to force > > > the component to create itself with the main app even though it > is > > > in a different viewstate? Thank you > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Flexcoders Mailing List > > > FAQ: > > http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt > > > Search Archives: http://www.mail-archive.com/flexcoders% > > 40yahoogroups.com > > > Yahoo! Groups Links > > > > > > > > > > > > > > -- > Flexcoders Mailing List > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt > Search Archives: http://www.mail-archive.com/flexcoders% 40yahoogroups.com > Yahoo! Groups Links > -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/