Something that should probably be mentioned in regard to placing your model in scope is that it makes services that consume $rootScope stuff harder to test. Since services are instantiated before runtime, you can't just inject a '$new' scope into the service to test - you have to build a mock for it. And this ends up involving mocking out a lot more than you actually want to test - $apply, $on, etc, etc, etc.
I've used scope-as-model in a couple of early projects, and I'm in the process of refactoring them now I've seen the light :) Jonathan On Fri, Mar 28, 2014 at 9:59 AM, Luke Kende <[email protected]> wrote: > Your email name is kinda funny. Glad you figured it out and it is > clicking for you. Services/factories can be really versatile and powerful > and keep code clean... Happy coding! > > > On Fri, Mar 28, 2014 at 9:42 AM, Pudas Jriest <[email protected]>wrote: > >> Okay, so I had to actually write a service for the cache to see how it >> does make a lot of sense. Good points. >> >> Actually, another free advantage i got out of adding a caching service >> was that I can avoid scope.apply()... which I was having to use because the >> updates to the scope were not emanating from angular. Now since I am >> building up the model on the scope from another source, that goes away too >> which makes things neater. >> >> On the amount of data on the scope, you are right. I'm just copying all >> data: $scope.component { xyz = cache.component.xyz}, but now I have a great >> place to be selective when needed. >> >> Thanks a bundle. >> PJ >> >> >> >> On Thursday, March 27, 2014 6:50:38 AM UTC, Antonio Fernández Porrúa >> wrote: >>> >>> 1. The values are not copied, just referenced. >>> >>> 2. You should not use your scope as your model, and you do not need to. >>> Put in the scope only the things needed in the view, neither more nor >>> less. >>> This way there are less values to check. >>> >>> 3. Your service could be just a javascript empty object, where you store >>> anything you want. >>> >>> angular.module(foo).service('bar',function(){ return this; }); >>> >>> Then in your controler >>> >>> If(bar.baz === undefined){ >>> bar.baz = $scope.baz >>> } >>> $scope.baz = bar.baz >>> >>> If baz is an array or an object this will work fine, so you can use an >>> object to store strings and numbers >>> >>> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "AngularJS" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/angular/zRTm0xd92fA/unsubscribe. >> To unsubscribe from this group and all its topics, 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. >> > > -- > 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. > -- 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.
