(因为这是相对较旧的 - 这个答案是为未来的读者准备的 - 但我偶然发现了这个问题,所以也许其他人也会)如果你使用提供者/配置块 - 它们是急切地完成的,所以最好在那里做急切的初始化代码。您正在/可能正在考虑服务/运行块。
为了用代码进行演示,这个警报不会弹出(假设myServiceModule
是您的应用程序依赖的模块并且myService
没有在任何地方注入):
angular.module('myServiceModule', []).service('myService', function () {
alert("service");
// service
return {};
});
但是,即使没有人依赖该myProvider
服务,也会弹出此警报:
angular.module('myProviderModule', []).provider('myProvider', function () {
alert("provider");
// Define your service here. Can be an array of inject-ables
// instead of a function.
this.$get = function () {
// service
return {};
};
});
您可以在这个plunker中看到这一点。
在此处的官方文档中阅读有关提供程序的更多信息。