AngularJS: Inject controller inside another controller from the same module

前端 未结 4 1102
耶瑟儿~
耶瑟儿~ 2021-02-12 16:12

Is possible to inject a controller into another controller that is part of the same module?

example:

4条回答
  •  没有蜡笔的小新
    2021-02-12 16:32

    Move your logic into a "service" (either a factory/service/provider). I personally prefer factories, I just like controlling my own object instead of using this or anything like that with the other options.

    Using a service, you give yourself the ability to abstract business logic from your controllers, and make that logic -- reusable -- !

    var app = angular.module('myAppModule', [])
    
    // typically people use the word Service at the end of the name 
    // even if it's a factory (it's all the same thing really...
    
    .factory('sharedService', function () {
    
        var methods = {};
    
        methods.helloWorld = function () {
            return 'Hello World!';
        };
    
        // whatever methods/properties you have within this methods object
        // will be available to be called anywhere sharedService is injected.
    
        return methods;
    })
    

    Notice sharedService is injected

    .controller('ControllerOne', ['$scope', 'sharedService', function($scope, sharedService) {
        $scope.helloWorld = sharedService.helloWorld();
    }])
    
    // Notice sharedService is injected here as well
    .controller('ControllerTwo', ['$scope', 'sharedService', function($scope, sharedService){
    
        // Now we can access it here too!
        console.log( sharedService.helloWorld() );
    }]);
    

    Side note : Controllers should be capitalized to show their significance!

    The power of services :)

提交回复
热议问题