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.

Reply via email to