Speaking for Steven, but the reason they espoused using
ModelLocator over
ViewHelpers was a few reasons. First off, many people felt
the need to
create ViewHelpers for every View. This was ridicolous; no View
could ever
do anything useful but instantiate GUI components, and register
for events.
You had no clue WHAT that View could do. Suddenly you're code
base
basically doubled for extremely little gain.
Secondly, most
people utilized ViewHelpers with ViewLocator instead of the
actual View's.
While this was nice, no one ever implemented strong typing,
thus defeating
the purpose of casting as ViewHelper describing what the View
could
do.
Third, you wrote more code for no gain. Some people would even put
code in
both the MXML View and ViewHelper, further compounding the issue of
"what's
really being seperated here".
In all fairness, I come from a
Flash background where you wrote classes.
These classes were your View. You
can do the same thing in Flex; write your
class to extend Canvas instead of
using a root Canvas tag; same thing. To
me, organizing code is 2nd nature.
MXML + embedded Script tags were just a
wonderful next step. My code changes
never broke my GUI changes and vice
versa. For some reason, it seems people
can't fathom the thought of
ActionScript in MXML files. That's just absurd;
you can see what the GUI is
AND does in the same. Go look at the source
code; all kinds of controls
draw themselves and perform actions. This isn't
rocket science, it's a
fuggin' form for crying out loud.
The other
option of using an external script file for the script tag is just
as bad.
You have to define controls and other buttons again, defeating the
use of
the ID control concept which helps shield your code from being broken
when
you change your GUI. :: que Carlos Mencia duh dah daaaa ::
Bottom line,
MXML components are extremely portable and encapsulated with
ActionScript
inside them. Granted, there are still people who will write
"components"
with ModelLocator's littered amongst them vs. expousing public
properties and methods to set the data instead... but that's the developers
fault, not MXML's.
MXML is just a class... it's ok to write
properties and methods in a
class... seriously, it's ok. :: whips out a bag
of teddy bears to hand out
just in case ::
----- Original Message
-----
From: "Tim Hoff" <[EMAIL PROTECTED]com>
To: <[EMAIL PROTECTED]ups.com>
Sent:
Monday, July 03, 2006 5:01 PM
Subject: [flexcoders] Re: Cairngorm2:
ViewLocator - ViewHelper
Thanks for the responses
guys,
Dimitrios:
Yes, the majority of my views are updated through
binding to the
ModelLocator. However, there are certain functions that are
soley
view-related (like setFocus(), filtering a DataGrid, updating
a
search parameter VO with view component values prior to executing
a
search command), that imo don't merit creating a command to
perform.
These kind of functions could just be located in a script
tag inside the
view. But, if the functions are numerous, the code
becomes more readable if a
seperate class is used.
Bjorn:
I agree that a command shouldn't
interrogate a view. That would
defeat the encapsulation. For the most part
though, the command
should update the ModelLocator and the ModelLocator
should update
the view.
Jesse:
As always, you crack me up. In the
situations that I mentioned
above, I assume that you are using a ViewLocator
- uid approach.
This is probably more efficient and centralized than
using
ViewHelpers. Besides, I really don't want to deal with Satan
spawn.
Care to share a small sample of your approach?
All in all, this isn't a
huge issue. Out of my current 300 views,
I've only found the need to use
three ViewHelpers. My questions are
more theoretical and best practice
oriented. Good stuff to know
when scalability is an issue. Also, I'm still
not sure what Alex
Uhlmann meant by "the ViewHelper adds and removes itself
from the
ViewLocator". Guess I need to take a trip back to the
Cairngorm
source.
Thanks again for your answers. I was hoping that
Steven or
Alistaire had time to chime in here, but I realize that they
are
very busy these days.
Cheers,
Tim Hoff
--- In [EMAIL PROTECTED]ups.com,
"JesterXL" <[EMAIL PROTECTED].> wrote:
>
> ViewHelpers == spawn
of satan. Nothing here but bloated
code. "Seperation
> of concerns"
doesn't count here; it's just something they say to
make
> themselves
feel better by using them.
>
> ViewLocators, to me are only
justified in extreme use cases.
Having other
> View's, or even Commands
specifically telling other views to do
certain
> things are bad
practice, but I have seen times where there is just
no other
> way. The
rest of the time, databinding and combinations of
getter / setters
>
should accomplish what you want. While their use should
be
discouraged,
> I'll be the first to admit they are useful and
lifesavers when you
need
> them.
>
>
> ----- Original
Message -----
> From: "Tim Hoff" <[EMAIL PROTECTED]>
> To:
<[EMAIL PROTECTED]ups.com>
>
Sent: Monday, July 03, 2006 6:05 AM
> Subject: [flexcoders] Cairngorm2:
ViewLocator - ViewHelper
>
>
> I've recently been toying with
the concepts of ViewHelper vs.
> ViewLocator. Alex Ulmann posted, "the
ViewHelper adds and removes
> itself from the ViewLocator", in his
Cairngorm 2 (for Flex 2) -
> Overview and Migration Path. I haven't seen
any examples yet that
> illustrate this method. Understandably, the
example pool and
> documentation for this kind of thing is small but
growing. So, I
was
> wondering if the authors of Cairngorm had any
advise/guidance for
this
> topic. Of course it's a matter of scale, but
in an enterprise
> application, what is recommended as best practice for
the use of
> ViewLocator and/or ViewHelpers? I'm sure that there
are
forthcoming
> books that cover this area, but feedback here might
promote better
> understanding.
>
> Best regards,
> Tim
Hoff
>
>
>
>
>
>
> --
>
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