Web Tutorials

BIGGEST AND FASTEST Web Tutorials – live24u.com

Home / JavaScript / AngularJS / Dynamically Loading Controllers in angularjs

Dynamically Loading Controllers in angularjs

/
/
/
9 Views

Dynamically Loading Controllers in angularjs

Simple AngularJS provides a simple easy way to associate a angularjs view with a controller all the angular and load everything at runtime call this url using the $routeProvider object.for Dynamically Loading Controllers in angularjs

The AngularJS providers simple exits that are injected into config() file all the settings are used to dynamically url load to register controllers, and register directives, filters and more directives after a given script is angularjs dynamically loaded. Notice that within the (settings) config() function an object literal each is assigned to angular app.register module (app represents the web-application’s module)





$routeProvider
     .when('/product',
        {
            controller: 'productController',
            templateUrl: '/app/views/product.html'
        })
    .when('/customerorders/:customerID',
        {
            controller: 'productOrdersController',
            templateUrl: '/app/views/customerOrders.html'
        })
    .when('/orders',
        {
            controller: 'OrdersController',
            templateUrl: '/app/views/orders.html'
        })
    .otherwise({ redirectTo: '/product' });

We can all the one load controller dynamically load by resolve each attribute of $routeProvider used in .when function.

var my4App = angular.module ('hw',['ngRoute','ngResource']);
my4App.config(['$routeProvider', '$controllerProvider', function($routeProvider, $controllerProvider) {
my4App.regCtrl = $controllerProvider.register;
 
//function call loadcontroller
function loadcontroller(controllerSubPath){
$.ajaxSetup({async:false});
$.getScript("scripts/controllers/" + controllerSubPath + ".js").done(function( script, textStatus ) {
}).fail(function( jqxhr, settings, exception ) {
console.log( exception );
});
}
 
/* router provider */
$routeProvider
.when('/Rights',{templateUrl:'views/Right/datasearch.html', controller:'searchCtrl', resolve: { load: function () {loadcontroller("right/searchCtrl");}}})
.otherwise({
redirectTo: '/'
});
}])




set the dynamic controller for directives

HTML Markup code

<div add-icons controller-name="FirstCtrl">
</div>
<div add-icons controller-name="SecondCtrl">
</div>

Angular script code

angular.module('myApp',[]).

directive('addIcons', function(){
return {
    restrict : 'A',
    scope:{},
    controller : "@",
    name:"controllerName",    
    template:'<input type="button" value="(+) plus" ng-click="add()">'
  }
}).
controller("FirstCtrl",function($scope){
     $scope.add = function(){
        alert("IconsOne add ");
      }
}).
controller("SecondCtrl",function($scope){
     $scope.add = function(){
        alert("IconsTwo add ");
      }
});

Demo

  • Facebook
  • Twitter
  • Google+
  • Linkedin
  • Pinterest

Vestibulum nec placerat orci. Mauris vehicula

Vestibulum nec placerat orci. Mauris vehicula,Vestibulum nec placerat orci. Mauris vehicula

Leave a Comment

Your email address will not be published.

It is main inner container footer text