Sander here is a quote from the most "complete" angular js book "ng-book" 
(page 429)

Note: we should never use $watch in a controller: It makes it difficult to 
test the controller.
We’re making an allowance here for the sake of illustration, and we’ll move 
these watches
into services later.

This is not the first place I have read about that. Stackoverflow also has 
plenty of suggestions by people saying not to do this and here is an 
example of an article that was fairly easy to find that agrees

http://www.benlesh.com/2013/10/title.html

as far as that line if (element[0].name === 'appointment_type')

for some reason I plnkr I had to do that instead of element.context.name  I 
am reading a lot about angular and definitely try to take the "best 
practices". Everywhere I read I am told to keep controllers short if 
possible and only use them for scope related things. DOM manipulation 
should happen in directives etc and not having watch events in controllers 
is one of the things I keep seeing

I plan on using a directive if I use watch events like you did the next 
question is...it is easy to grab the attributes of an element in the link 
function so that is why I did it that way. What other way can I grab the 
attributes of an element when I have something like ng-change on it? can I 
pass the event ($event) and grab the data from there?

I agree what you have works and I take your advice very serious because you 
are very knowledgeable on all kinda of topics here but I have read too much 
that says not to use watch events in angular so how else can we do this 
that satisfies not doing that but also I don't do what I am doing since you 
don't think its a good idea


On Thursday, May 8, 2014 11:16:57 AM UTC-4, Sander Elias wrote:
>
> Hi Billy,
>
> Have a second look at my last sample, there is no directive in there at 
> all.
> in your directive you have this line: if (element[0].name === 
> 'appointment_type'). I think that line smells.
> You have all the data you need already in your program available, and here 
> you are querying the done to ask it for info?
> a few lines above you did put this in?? Don’t use the DOM as a 
> communication channel!
>
> I don't know who has told you that watchers in your controller are bad 
> practice? It is not. I put in 2 really simple watches, and the current 
> version of Angular can parse those at incredible speed, and this will only 
> get better. 
>
> I won't go into the function() {}() deeply, but it's called an 
> IIFE<http://benalman.com/news/2010/11/immediately-invoked-function-expression/>,
>  
> and those help to protect my code.
>
> Regards
> Sander
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" 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 http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to