I have not decided yet of how I am going to handle updating the user status 
button to login or logout. Not sure what controller I want to put it in yet 
so that is why you see multiple controllers with a "user.isLoggedIn" 
attribute, so just ignore that.

As far as why not grab the data from the auth service...

This is my Auth service which should only handle login/ logout etc The 
broadcasting is so I can put listeners on controllers who will then grab 
data from my "userData" or "dataFactory". This service will grab all the 
data I need from from the backend and then I can grab the data from both my 
"client" and "provider" controllers.

something like this inside the client controller

$scope.$on('clientAuthenticated', function(phpData) {
    $scope.clientData = userData.getData()
});


On Sunday, April 20, 2014 11:02:00 PM UTC-4, Luke Kende wrote:
>
> So, here's what I am understanding about your order of events, simplest 
> scenario...
>
> 1. User comes to home page and is not logged in therefore sees Login form.
> 2. User enters credentials and clicks login, which let's say is 
> successful, so factory method sets it's local isLoggedIn value to true and 
> broadcasts the event.
> 3.  At this point in time, the MainController and the LoginController are 
> still active controllers on the page.  MainController gets the broadcast 
> (but not sure why, maybe to change the state of the menu navigation?). 
>  LoginController runs the promise.then() function which sets it's own state 
> variable for isLoggedIn (but not sure why here either as the view is about 
> to change), then redirects the angular route so the new view is loaded with 
> the ClientController to show the account info.
>
> Why does the ClientController need the broadcast?  To get the phpData?  If 
> this is true, I'd say put the object data on the factory instance and by 
> injected it into the ClientController you will have access to the user's 
> logged in data (or anywhere throughout the app).
>
> factory.user = {
>         isLoggedIn : false,
>         data: null
>     };
>
> // in $http promise.then()
> if (phpData.account_type === 'client') {
>     // $timeout(function() {
>     broadcast('clientAuthenticated', phpData);
>     factory.user.data = phpData;
>    // }, 1000);
>    return phpData;
> }
>
>
>
>
> On Sun, Apr 20, 2014 at 7:54 PM, Billy Figueroa 
> <[email protected]<javascript:>
> > wrote:
>
>> FIY ignore the time functions. I was only using those to see if the 
>> broadcast worked. This is not part of my original code
>>
>>
>> On Thursday, April 17, 2014 9:53:56 PM UTC-4, Billy Figueroa wrote:
>>>
>>> Hi All,
>>>
>>> so I have a quick issue with my controller ordering I guess.
>>>
>>> I have the following shell page layout...
>>>
>>> <html>
>>>    <head></head>
>>>    <body ng-controller="MainController">
>>>       <div ng-view></div>
>>>    </body>
>>> </html>
>>>
>>> I have an ng-view template that the routeProvider is loading 
>>> (account.php) when we hit the url and load ClientController...
>>>
>>>     .when('/client/:user_id/account', {
>>>         templateUrl: '../MINT/views/account.php',
>>>         controller: 'ClientController',
>>>         restrict: true
>>>     })
>>>
>>> I also have an AuthFacotory factory where, once a user logs in and I get 
>>> data back from my backend (PHP) I broadcast a signal to say we are 
>>> authenticated
>>>
>>>                     if (phpData.account_type === 'client')
>>>                         $rootScope.$broadcast('clientAuthenticated', 
>>> phpData);
>>>                     else
>>>                         $rootScope.$broadcast('providerAuthenticated', 
>>> phpData);
>>>
>>> I have the following I guess "watches" both inside the MainController 
>>> and ClientController
>>>
>>>
>>> <-- MainController -->
>>>     $scope.$on('clientAuthenticated', function(phpData) {
>>>         console.log("We caught the broadcast for clientAuthenticated[
>>> MainController]");
>>>     });
>>>
>>> <-- ClientController -->
>>>     $scope.$on('clientAuthenticated', function(phpData) {
>>>         console.log("We caught the broadcast for clientAuthenticated[
>>> ClientController]");
>>>     });
>>>
>>>
>>> I am only "catching" the one in the MainController.
>>>
>>> Based on the structure being that the ClientController is loaded as part 
>>> of the view, I m guessing its some sort of a child of the MainController 
>>> but why is it not "catching" that broadcast?
>>>
>>> the weird part is that I have other code in the ClientController and 
>>> that gets executed but the console.log inside the scope statement is not
>>>
>>> I wanted to create a jsfiddle or plunker but I rarely get them working 
>>> when I try to do it in a non global modular way like real apps are written 
>>> i.e. var myApp = angular.module('myApp', [])
>>>
>>  -- 
>> 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/NaBscLyPqhY/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> 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