Hi group,

I would like to 
1) maintain separate route/state configuration files for each functional 
module according to John Papa's styleguide 
<https://github.com/johnpapa/angularjs-styleguide#style-y271>
2) give states special properties because that's what John Papa did in 
his Pluralsight Angular with Breeze course 
<http://pluralsight.com/training/courses/TableOfContents?courseName=build-apps-angular-breeze>.
 
 And it just seems reasonable that an app would put special properties on 
states.


However, in the course I see that all of the routes for the whole app are 
defined in a single file, config.routes.js.  

The code has three steps:
1) The routes are defined in an array with special properties (title, 
settings, nav, content).  
     function getRoutes() {
         return [...]
2) The array is stored as an Angular constant
     app.constant('routes', getRoutes());
3) This Angular constant is iterated through to set the routes
           routes.forEach(function (r) {
                 $routeProvider.when(url, definition);
            }

Then the Angular constant, "routes", is used later elsewhere in the app.


So I tried this:
1) Define states for each module in a separate array in a file for the 
module and concatenate that array onto a growing array property of 
angular.module("app")
2) In the app.js file, create an Angular constant and set it to this array
3) Iterate through this to set the states using $stateProvider.state() 
calls in a single app.config() call

This didn't work, seemingly because app.coffee was processed before the 
individual module route files and so the array was undefined at the time of 
the .state() calls.


Then I tried this:
1) Define states for each module in a separate array in a file for the 
module
2) After each module's state definitions, call app.config with a call to a 
method, setModuleStates, of a factory, stateSetter, that 1) concats them to 
a growing array of all states for the app and 2) calls $stateProvider.state

This didn't work because the stateSetter factory was unknown at the point 
it was injected, or more likely because I still don't quite understand how 
to handle injectables and parameters in function signatures.




mymodule.coffee:
moduleStates = [...]
angular.module 'app'
.config (stateSetter) ->
    stateSetter.setModuleStates(moduleStates)




app.coffee:
.factory 'stateSetter', ($stateProvider) ->             # $stateProvider is 
an injectable

  setModuleStates = (moduleStates) ->                   # moduleStates is a 
parameter
    setState = (url, definition) ->                     # url and 
definition are parameters
    ...
      $stateProvider.state slashModule + definition.title,

  app.appStates = angular.module('app').appStates or []
  app.appStates.concat(moduleStates)
  moduleStates.forEach (r) ->
    setState r.url, r.config



So I'm stumped.  The generator-angular-fullstack states are modularized 
into distinct files for each module, but there's no additional Angular 
constant to hold all of them and no special properties tied to them.  This 
seems to make it tricky.  How do you do this?

Thanks,
Dan

-- 
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