Using your example will change a bit from what you had above. We will talk about what makes Repositories injections a bit.
import injectRepositories from 'app/utils/inject';
export default Ember.Route.extend({
repository: injectRepositories('person'),
model: function() {
var repository = this.get('repository');
return repository.find();
}
});
The initializer can be improved with the following changes:
import registerWithContainer from "ember-cli-auto-register/register";
export function initialize(_, application) {
registerWithContainer("repositories", application);
application.inject("repositories", "store", "store:main");
}
export default {
name: "repositories",
after: "store",
initialize: initialize
};
Let me break down what happens on every line.
registerWithContainer("repositories", application);
ember-addon ember-cli-auto-register. repositories Ember . , :
application.register("repositories:person", PersonRepository);
ember-addon ember-cli-injection:
import inject from "ember-cli-injection/inject";
var injectRepositories = inject("repositories");
export default injectRepositories;
:
import injectRepositories from 'app/utils/inject';
export default Ember.Route.extend({
repository: injectRepositories('person'),
model: function() {
var repository = this.get('repository');
return repository.find();
}
});
, , . repositories , (. ember-cli-injection). , . , .
import Ember from 'ember';
var injection = function(key) {
return function(name) {
return Ember.computed(function(propertyName) {
var objectName = name || propertyName;
return this.container.lookup(key + ':' + objectName);
});
};
};
export default injection;
, repository: injectRepositories('person'). , .
, , , person: injectRepositories(). person propertyName, null, objectName person. API, , API- Ember.inject.service Ember.inject.controller, Ember 1.10.