Hi, I'm newbie in Angular JS. I'm trying to structure my application with 
Angular JS & Require JS. After studying multiple blogs and documents I've 
structured my application like the following. 


<https://lh6.googleusercontent.com/-TokRSvq6shw/U9X8H8fRM_I/AAAAAAAAAGA/UAqUERNOeUk/s1600/File.png>


I'm following angular-requirejs-seed 
<https://github.com/tnajdek/angular-requirejs-seed> for my application. But 
I'm confused about few things, whether those are the best practices or I 
can improve my code. So I need suggestions from the experts.


1. *Defining controller for the modules*:- In my application there is a 
main module, which is defined within app.js and there are two more modules, 
one is User module and the second one is Admin module. I'm added both User 
& Admin module as the dependency of main module. Now for user module I need 
to define few controllers, which will be defined in separate files. So in 
main.js of UserModule I've written:-

define(['angular'], function (angular) {

return angular.module('UserModule', [])

.controller(LoginCtrl', ['$scope', '$injector', function($scope, $injector) 
{

require(['controllers/logincontrollerl'], function(loginctrl) {

$injector.invoke(loginctrl, this, {

'$scope': $scope

});

});

}]);

});


And then within logincontroller.js I've written


define([], function() {

return ['$scope', function($scope) {

$scope.$apply();

}];

});


As we can't define a controller until a module is defined, so we can't add 
the controller as the top most require part of main.js. But is it good to 
define all the controllers within main.js and require all those in this 
way? What I want is, to define each controller within the controller file 
itself not within the main.js. So please suggest me what should I do.


2. *Defining routers*:- In the router.js I've written:-


define(['app'], function (app) { 

return app.config(['$routeProvider', function($routeProvider) {

$routeProvider.when('/signin', {

templateUrl: 'app/modules/user/views/signin.html'

});

$routeProvider.otherwise({

redirectTo: '/home'

});

}]);

});


Here for a specific route I need to define the template url, but I don't 
think it's good. Because not only I've to define the template url for each 
route but also I need to define the controller name for each route. So 
either I've to write :-


$routeProvider.when('/signin', {

templateUrl: 'app/modules/user/views/signin.html',

controller: 'LoginCtrl'

});


or if I just declare the template url, then within sign.html I've to 
declare the ng-controller directive. But router will decide which template 
show when we have modules and controllers?


What I want is, on each route the router will fire an event or something 
like that to the corresponding module, say UserModule and the module will 
redirect it to a specific controller and the controller will decide which 
template to show. I think that may be better structure. So please suggest 
me what should I do to create this type of structure.























  
<https://lh6.googleusercontent.com/-TokRSvq6shw/U9X8H8fRM_I/AAAAAAAAAGA/UAqUERNOeUk/s1600/File.png>

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