Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
899 views
in Technique[技术] by (71.8m points)

typescript - Conditional injection of a service in AngularJS

I have defined a service like this :

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

I want my service to be instantiated only for new user (i.e. when user.createdAt > today).

So is there a way to conditionally inject my service or at least destroy my service without any side effect if the user is an old one.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use the $injector service to get inject-ibles dynamically if you need to:

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

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

Here's a full running demo: http://jsbin.com/bemakemaja/1/edit

And the $injector docs: https://docs.angularjs.org/api/auto/service/$injector

As a general guideline though I'd recommend not designing your services such that simply injecting them has side effects.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...