AngularJS - different ways to create controllers and services, why?

后端 未结 2 391
北荒
北荒 2020-12-10 01:28

I keep seeing different examples of creating controllers and services in AngularJS and I\'m confused, can anyone explain to me the differences between the two approaches?

相关标签:
2条回答
  • 2020-12-10 02:12

    My preferred way of creating controllers and directives is as following:

    /**
    * SomeCoolModule.controller.js
    */
    
    (function(){
    'use strict';
    
        angular.module('app.modals.SomeCoolModule').controller('SomeCoolModuleController', SomeCoolModuleController);
    
        AddFlowCurveModalController.$inject =
            [
                '$scope',
                '$filter',
                '$log',
            ];
    
        function SomeCoolModuleController($scope, $filter, $log) {
            /* controller body goes here */
        }
    })();
    

    PS: no global namespace pollution is taking place above due to IIFE.

    0 讨论(0)
  • 2020-12-10 02:18

    The first one will pollute the global namespace, which is not what you want in the long run.

    function ExampleCtrl($scope){
        $scope.data = "some data";
    }
    

    The second one scopes the Controller to that module instance. It makes it also injectable. Better still is using the array notation (as below), since this will survive minification.

    app.controller("ExampleCtrl", ['$scope', function($scope){
        $scope.data = "some data";
    }]);
    

    The difference between an (angular) service and factory seems quite small. A service wraps a factory, which uses $injector.instantiate to initialize the service.

    0 讨论(0)
提交回复
热议问题