创建可重用的AngularJS提供程序和服务

时间:2013-12-21 08:54:12

标签: angularjs

在编写AngularJS提供程序,服务,工厂等时,我希望它们可以在各个项目中重用。

如果您编写如下内容,则很难在不修改的情况下重复使用它。

angular.module('myApp').provider('myProvider', function () {
    return {
        $get: ['$http', function($http) {
            return {
                someFunction: function () {
                    return 'some result';
                }
            }
        }]
    }
});

现在,如果我做了这样的事情,我可以更轻松地重复使用它。这是一种标准做法,还是我采取了错误的做法?

// This is defined in some other .js file maybe
function myProvider() {
    return {
        $get: ['$http', function($http) {
            return {
                someFunction: function () {
                    return 'some result';
                }
            }
        }]
    }
}

// My app.js or whatever file
angular.module('myApp').provider('myProvider', myProvider);

2 个答案:

答案 0 :(得分:4)

您可以创建一个可重复使用的模块,如:

angular.module('mySharedData').provider('myProvider', function () {
    return {
        $get: ['$http', function($http) {
            return {
                someFunction: function () {
                    return 'some result';
                }
            }
        }]
    }
});

要使用它,请确保加载定义mySharedData的文件,然后执行:

var app = angular.module('myApp', ['mySharedData'])
app.controller('myController', function ( $scope, myProvider ) {...});

答案 1 :(得分:1)

  

如果您编写如下内容,则很难在不修改的情况下重复使用它。

完全没有。我们只能定义一次模块:

var app = angular.module('myApp');

并且每个服务/提供者/工厂将被定义为:

app.provider('myProvider', function () {
    return {
        $get: ['$http', function($http) {
            return {
                someFunction: function () {
                    return 'some result';
                }
            }
        }]
    }
});

app.provider('myProvider2', function () {/*..*/}

app.service('myService', function () {/*..*/}