Hi,
Thanks. That's roughly what I did. I have 2 questions.
The simple one: Are you handling the views from the controller itself (by
changing the view in the service)?
The "more complex" one:
Let's say I have this route defintions:
1. $routeProvider.when('/inbox', {
2. templateUrl: 'inbox.html',
3. controller: InboxCtrl
4. }
5. });
6. $routeProvider.when('/otherPage', {
7. templateUrl: 'otherPage.html',
8. controller: OtherPageCtrl
9. }
10. });
In InboxCtrl I call function (*InboxCtrl($scope, MyService)*) and do all
kind of manipulations. Let's assume a very simple service here like:
function EmailService(){
var myStatus = "OK";
return {myStatus: myStatus};
}
function InboxCtrl($scope, MyService){
$scope.myStaus = MyService.myStatus;
}
And it is bound to an input in the view, so user can change myStatus.
Now a person clicks on a link that leads him to "otherPage" (with *function
OtherPageCtrl($scope, MyService)*).
When I call MyService.MyStatus in the "otherPage" controller, I get "OK" no
matter what was its value in the "Inbox" page.
Is that a glitch in my code? Or is that how it's supposed to be?
Thanks
On Wed, Feb 12, 2014 at 8:53 AM, Luke Kende <[email protected]> wrote:
> Yes. Use a service. If it's not working for you then you are coding it
> wrong. My guess is not understanding object inheritance and losing a
> reference to primitive values
>
> My examples are not full blown, but hopefully the details will help you
> see what you need:
>
> function EmailService(){
> var emailObject = {
> emails: [],
> currentView: 'inbox',
> folders: []
> }
>
> return {
> emails: emailObject.emails,
> setCurrentView: function(view){
> emailObject.currentView = view;
> },
> folders: emailObject.folders
> }
>
> }
>
> function InboxCtrl($scope, MyService){
> $scope.emails = MyService.emails;
>
> //now whatever you do on the scope will reflect in the service emails
> and will remain there when reloaded
> $scope.emails.push({'from': 'bob', message: 'Hi Larry!'});
>
> $scope.folders = MyService.folders;
>
> $scope.userClickedFolder(folder){
> MyService.setCurrentView(folder)
> }
> }
>
> function OtherCtrl(){
>
> }
>
> On Monday, February 10, 2014 8:40:31 AM UTC-7, Yonatan Kra wrote:
>>
>> I have a SPA (single page app). I am trying to keep data of one route,
>> when moving to another, so if a person returns to the route, he'll see it
>> in exactly the same state he left it.
>>
>> In example, I have an inbox page (e.g. #/inbox).
>> On this page, a person can see his inbox, and gets new messages to the
>> inbox when he stays on this page. Unread emails are in bold, read emails
>> are normal and they are sorted and filtered in a certain manner the user
>> has chosen.
>> The app gets one "push" of emails from the server, and then updates when
>> it runs.
>> It works fine.
>>
>> The problem arises when this person "navigates" away from the inbox
>> "page".
>> The navigation is from #/inbox to #/other-page - each has its own
>> controller and view.
>>
>> After the person navigates away, and then comes back to the page, the
>> page resets - e.g. the inbox starts from scratch, there are no unread
>> emails in bold, filters are reset etc.
>> I followed instructions given me here, to keep the data in a service, but
>> when I get back to #/inbox, the service resets and I lost the data.
>>
>> How do I keep such data, so the person would see the same inbox page
>> after navigating the rest of the SPA?
>> Or is there a smarter way than just rebuilding the page with saved data?
>>
>> Thanks
>>
>>
>>
>> --
> 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/jL-IAlCZEaU/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/groups/opt_out.
>
--
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/groups/opt_out.