Skip to content

Instantly share code, notes, and snippets.

@ThomasBurleson
Forked from joelhooks/angularServices.js
Created August 19, 2013 02:11
Show Gist options
  • Save ThomasBurleson/6265249 to your computer and use it in GitHub Desktop.
Save ThomasBurleson/6265249 to your computer and use it in GitHub Desktop.
//from most to least verbose, but it is all the same in the end.
(function() {
var module = angular.module("myApp.myModel", []);
var MyModel = function MyModel() {
this.asyncService = null;
this.someApi = function() {
return this.asyncService.getStuff(); //promise?
}
}
var myModelProvider = Class.extend({
model: new MyModel();
$get: ['asyncService', function (asyncService) {
model.asyncService = asyncService; //dependency injection
return model; //resolved for the lifetime of app
}]
});
modules.provider('myModel', myModelProvider);
}())
// or
(function() {
var module = angular.module("myApp.myModel", []);
var MyModel = function MyModel(asyncService) {
this.asyncService = null;
this.someApi = function() {
return this.asyncService.getStuff(); //promise?
}
}
module.factory('myModel', ['asyncService', function (asyncService) {
//could do some stuff here
return new MyModel(asyncService);
}]);
}())
// or
(function() {
var module = angular.module("myApp.myModel", []);
var MyModel = function MyModel(asyncService) {
this.asyncService = null;
this.someApi = function() {
return this.asyncService.getStuff(); //promise?
}
}
module.service('myModel', ['$asyncService', MyModel]); //most simple option
}())
@ThomasBurleson
Copy link
Author

$asyncService is another instance (of a Class, object, function) that was

  1. registered with Angular (via .service() or .factory(), and then later...
  2. instantiated by the Angular engine during the app bootstrapping processes
// register AsyncService to create instance of $asyncService
angular.module( "myApp.myModel", [ ])
          .service( "$asyncService", AsyncService)
          .service('myModel', MyModel);

This instance $asyncService is then injected as an parameter to the function MyModel( ) invocation; which creates an instance of myModel.

See how Angular allows you to create beans/services, define dependencies, and auto-injects those as needed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment