一尘不染

有条件注入AngularJS中的服务

angularjs

我已经定义了这样的服务:

angular.module('myApp').service('myService', [
'$rootScope',
...
...

我希望仅为新用户实例化我的服务(即当user.createdAt>今天)。

因此,如果用户是老用户,有没有办法有条件地注入我的服务或至少销毁我的服务而没有任何副作用。


阅读 203

收藏
2020-07-04

共1个答案

一尘不染

$injector如果需要,您可以使用该服务动态获取可注射对象:

app.controller('DemoCtrl', function($injector) {
  this.clicky = function() {
    myFact = $injector.get('myFactory');
    myFact();
  };
});

app.factory('myFactory', function() {
  return function() {
    alert('foobar!');
  };
});

这是完整运行的演示:http :
//jsbin.com/bemakemaja/1/edit

$injector文档:https
:
//docs.angularjs.org/api/auto/service/$injector

作为一般准则,尽管我建议您不要设计您的服务,使其仅注入它们会产生副作用。

2020-07-04