What exactly is shared service?
On Wednesday, September 24, 2014, Mark Volkmann <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
> There are many ways to do what you are asking.
>
> One way is to put the data on the root scope by injecting $rootScope or
> using $scope.$root. That is frowned upon.
>
> Another way is to explicitly work with the data on the parent scope like
> this:
> $scope.$parent.foo = 'bar';
> That's also somewhat frowned upon.
>
> Another way is for the parent to create an object that will hold data that
> is accessed when the scope hierarchy is traversed. The controller for the
> parent could do this:
>
> $scope.holder = {};
>
> The controllers for any descendant scopes could then do this:
>
> $scope.holder.foo = 'bar';
> and
> var foo = $scope.holder.foo;
>
> This is really just taking advantage of the dot that Eric Eslinger
> suggested. It works when the descendant scopes don't have a property named
> "holder" and traversing the hierarchy finds it in an ancestor scope.
>
> Another way is to use a shared service that is injected into all the
> controllers that need it.
>
> On Wed, Sep 24, 2014 at 4:47 PM, mark goldin <[email protected]>
> wrote:
>
>> And that is my problem. $scope is going out of scope when I move to child
>> state. So, instead of trying to work around it how can I make it
>> available everywhere?
>>
>> On Wednesday, September 24, 2014, Eric Eslinger <[email protected]>
>> wrote:
>>
>>> yeah. That's because child scopes use prototype inheritance to reference
>>> parent scope data.
>>>
>>> e
>>>
>>> On Wed, Sep 24, 2014 at 2:01 PM, mark goldin <[email protected]>
>>> wrote:
>>>
>>>> Not sure I understand, So, instead of ng-model="eventDateFrom" I should
>>>> say ng-model="data.eventDateFrom"?
>>>>
>>>> On Wed, Sep 24, 2014 at 3:40 PM, Eric Eslinger <[email protected]
>>>> > wrote:
>>>>
>>>>> Also, try putting a dot in your model. As in, instead of looking at
>>>>> $scope.value, do $scope.view.value
>>>>>
>>>>> Angular in the past at least, had issues with watching primitive types
>>>>> on the scope.
>>>>>
>>>>> https://egghead.io/lessons/angularjs-the-dot
>>>>>
>>>>> On Wed, Sep 24, 2014 at 1:36 PM, Mark Volkmann <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Add a console.log inside the callback function for the watch to
>>>>>> verify whether that is getting triggered. It seems like the ng-model
>>>>>> isn't
>>>>>> getting configured correctly.
>>>>>>
>>>>>> If that doesn't help, I suggest creating a plunk that demonstrates
>>>>>> the problem.
>>>>>>
>>>>>> On Wed, Sep 24, 2014 at 3:33 PM, mark goldin <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> Nope, does not look like it works. With my version it gets into
>>>>>>> localData.add
>>>>>>> when a view is loading. But with yours is not getting there at all.
>>>>>>>
>>>>>>> On Wed, Sep 24, 2014 at 3:16 PM, Mark Volkmann <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Do you have an input in your HTML with ng-model="eventDateFrom"?
>>>>>>>> When you change the value of the input by typing a new value in the
>>>>>>>> browser, does the watch get triggered?
>>>>>>>> Oh, I think I see the problem. You need to pass a function to
>>>>>>>> $watch like this:
>>>>>>>>
>>>>>>>> $scope.$watch('eventDateFrom', function (value) {
>>>>>>>> localData.add('eventDateFrom', value);
>>>>>>>> });
>>>>>>>>
>>>>>>>> On Wed, Sep 24, 2014 at 3:02 PM, mark goldin <[email protected]
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> $scope.eventDateFrom = getFormattedDate(date);
>>>>>>>>> localData.add("eventDateFrom", $scope.eventDateFrom); // Will
>>>>>>>>> properly store key and value.
>>>>>>>>>
>>>>>>>>> $scope.$watch("eventDateFrom", localData.add("eventDateFrom",
>>>>>>>>> $scope.eventDateFrom)); // will not trigger localData.add
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Sep 24, 2014 at 2:58 PM, Mark Volkmann <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Show me your call to $scope.$watch.
>>>>>>>>>>
>>>>>>>>>> On Wed, Sep 24, 2014 at 2:54 PM, mark goldin <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> That is exactly what I am doing, but "equivalent of
>>>>>>>>>>> setFavoriteNumber " is not getting called.
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Sep 24, 2014 at 2:51 PM, Mark Volkmann <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> No. Set up the watch in your controller where you have access
>>>>>>>>>>>> to $scope. Inject the service into that controller so you can call
>>>>>>>>>>>> your
>>>>>>>>>>>> equivalent of setFavoriteNumber in the watch callback function.
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Sep 24, 2014 at 11:50 AM, mark goldin <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Where would I watch? Right in myDataSvc?
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Sep 24, 2014 at 11:47 AM, Mark Volkmann <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> You could watch the scope property for changes and then pass
>>>>>>>>>>>>>> the new value to the setFavoriteNumber method of the service.
>>>>>>>>>>>>>> Something
>>>>>>>>>>>>>> like this:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> $scope.$watch('myScopeProp', myDataSvc.setFavoriteNumber);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Sep 24, 2014 at 11:43 AM, mark goldin <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> And that is what I kind of have. But my problem is that UI
>>>>>>>>>>>>>>> is bound to $scope. When I select a new vlaue that value is not
>>>>>>>>>>>>>>> getting
>>>>>>>>>>>>>>> into myDataSvc.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, Sep 24, 2014 at 11:41 AM, Mark Volkmann <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> One way to do that is to put the data in a service and
>>>>>>>>>>>>>>>> inject that service everywhere you need it. For example,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> myModule.factory('myDataSvc', function () {
>>>>>>>>>>>>>>>> var svc = {};
>>>>>>>>>>>>>>>> var favoriteNumber;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> svc.setFavoriteNumber = function (n) { favoriteNumber =
>>>>>>>>>>>>>>>> n; };
>>>>>>>>>>>>>>>> svc.getFavoriteNumber = function () { return
>>>>>>>>>>>>>>>> favoriteNumber; };
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> return svc;
>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Sep 24, 2014 at 11:35 AM, mark goldin <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I have UI that is bound to some $scope values. When I go
>>>>>>>>>>>>>>>>> deeper into my application I need to use values entered in
>>>>>>>>>>>>>>>>> UI. At some
>>>>>>>>>>>>>>>>> point data that was put on $scope by UI is not available. How
>>>>>>>>>>>>>>>>> can I share
>>>>>>>>>>>>>>>>> data collected from UI across the app?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>>> .
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> R. Mark Volkmann
>>>>>>>>>>>>>>>> Object Computing, Inc.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> 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/dkXHM4dufvw/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.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> R. Mark Volkmann
>>>>>>>>>>>>>> Object Computing, Inc.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> 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/dkXHM4dufvw/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.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> R. Mark Volkmann
>>>>>>>>>>>> Object Computing, Inc.
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> 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/dkXHM4dufvw/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.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> R. Mark Volkmann
>>>>>>>>>> Object Computing, Inc.
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> 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/dkXHM4dufvw/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.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> R. Mark Volkmann
>>>>>>>> Object Computing, Inc.
>>>>>>>>
>>>>>>>> --
>>>>>>>> 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/dkXHM4dufvw/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.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> R. Mark Volkmann
>>>>>> Object Computing, Inc.
>>>>>>
>>>>>> --
>>>>>> 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 a topic in the
>>>>> Google Groups "AngularJS" group.
>>>>> To unsubscribe from this topic, visit
>>>>> https://groups.google.com/d/topic/angular/dkXHM4dufvw/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 a topic in the
>>> Google Groups "AngularJS" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/angular/dkXHM4dufvw/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.
>>
>
>
>
> --
> R. Mark Volkmann
> Object Computing, Inc.
>
> --
> 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/dkXHM4dufvw/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.