Luke, thank you for the detailed answer. Our current design includes the directive part of your solution, but state is maintained on the rootscope. I am convinced by the option of injecting the service in both the controllers and the directive. Thank you again for the detailed and helpful answer.
On Monday, March 17, 2014 11:28:24 AM UTC+5:30, Luke Kende wrote: > > I think services are made for this very need. The service should contain > your model instead of the controller - took a while for that to sink in, > but once it did, my controllers are easier to write. A service is injected > into your controller only to interact with the view and it maintains state > for the life of the app. It doesn't matter that there will be a large > number of services that I can see. To put the data on rootScope sounds like > a nightmare to manage especially if you have a lot of shared state, for > one, you could accidentally overwrite data because of scope inheritance. > At least with services you get a name space and have to purposely assign > values. > > I recently wrote a filter for our users that has different contexts and > maintains states. I build the data model and it's basic functions in a > service. I inject that service into the a directive that manages the ui > interaction, and I also inject it into the controller for the list of items > to respond to. The net result was that my controller was very easy to > write and wasn't so tightly coupled to the view had a I written it on scope > (or rootScope). Also, the directive made it easy to just drop in the filter > where I needed it without duplicating code. All the controller had to do > was watch when a value changed on the service and respond to it by updating > the list. (Not to mention that the state of the filter was maintained > after leaving and returning). > > I wouldn't use local storage unless you want the data to be remembered > after the page is actually loaded anew and don't want to store state on the > server. > > > > On Sunday, March 16, 2014 11:17:09 PM UTC-6, Rajesh wrote: >> >> We have a fairly complex application (more than 100 views and >> controllers). Let me explain the problem space with an example. When a user >> is trying to create a new quotation (View 1), they may not find a product >> in the list. So they need to go to a different view (View 2) to add a new >> product, and then continue working on the quotation (View 1). The data >> entered on the quotation before adding the new product should be retained >> while returning after adding the new product. >> >> While using a service to share data between these controllers seems to do >> the job, we have a large number of such use cases, and therefore there will >> be a large number of services and dependencies to manage. Is it a good >> practice to use the rootScope for storing and retrieving the state instead? >> >> A similar use case is to retain the filter (search) values on a list view >> after the user navigates to a different view and comes back. >> >> 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.
