听起来您正在寻找提供者。
仅当您希望为应用程序范围的配置公开 API 时才应使用 Provider 配方,该 API 必须在应用程序启动之前进行。这通常只对可重用服务感兴趣,这些服务的行为可能需要在应用程序之间略有不同。
这是提供程序的一个非常基本的示例:
myMod.provider('greeting', function() {
var text = 'Hello, ';
this.setText = function(value) {
text = value;
};
this.$get = function() {
return function(name) {
alert(text + name);
};
};
});
这将创建一个新服务,就像您可能使用myMod.service
or一样myMod.factory
,但提供了一个在配置时可用的附加 API,即setText
方法。您可以分config
块访问提供程序:
myMod.config(function(greetingProvider) {
greetingProvider.setText("Howdy there, ");
});
现在,当我们注入greeting
服务时,Angular 将调用提供者的$get
方法(在其参数中注入它所要求的任何服务)并为您提供它返回的任何内容;在这种情况下,$get
返回一个函数,当使用名称调用该函数时,将使用我们设置的任何内容来提醒该名称setText
:
myMod.run(function(greeting) {
greeting('Ford Prefect');
});
// Alerts: "Howdy there, Ford Prefect"
这正是其他提供商喜欢$httpProvider
和$routeProvider
工作的方式。
有关提供程序和依赖注入的更多信息,请查看关于依赖注入的 SO question。