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.
