在编写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);
答案 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 () {/*..*/}