Ember cli,如何用控制器初始化服务?
Ember cli, how to initialize a service with a controller?
我有一个叫时钟的服务
//app/services/clock.js
export default Ember.Object.extend({
pulse: Ember.computed.oneWay('_seconds').readOnly(),
tick: function () {
var clock = this;
Ember.run.later(function () {
var seconds = clock.get('_seconds');
if (typeof seconds === 'number') {
clock.set('_seconds', seconds + (1/4));
}
}, 250);
}.observes('_seconds').on('init'),
_seconds: 0
});
我还有一个初始化器,我想在其中注册 clock 服务,然后将其注入我的 "interval" route/controller.
// app/initializers/clock-service.js
import ClockService from 'app/services/clock';
export default {
name: 'ClockServiceInitializer',
initialize: function(container, application) {
container.register('clock:service', ClockService);
app.inject('controller:interval', 'clock', 'clock:service');
}
};
编辑:看起来是这样的:
export default {
name: 'services',
initialize: function(container, app) {
// Inject into all routes and controllers
// Or if you wanted, into a specific route
app.inject('controller:index', 'clock', 'service:clock');
}
};
我有基本相同的东西,尽管我注入了所有控制器。
在初始化器中:
//container.typeInjection('component', 'store', 'store:main');
application.register('clock:service', ClockService, { singleton: true });
application.inject('controller', 'clock', 'clock:service');
并且在控制器中,像这样使用它:
updateView: {
// ...
}.observes('clock.pulse')
我有一个叫时钟的服务
//app/services/clock.js
export default Ember.Object.extend({
pulse: Ember.computed.oneWay('_seconds').readOnly(),
tick: function () {
var clock = this;
Ember.run.later(function () {
var seconds = clock.get('_seconds');
if (typeof seconds === 'number') {
clock.set('_seconds', seconds + (1/4));
}
}, 250);
}.observes('_seconds').on('init'),
_seconds: 0
});
我还有一个初始化器,我想在其中注册 clock 服务,然后将其注入我的 "interval" route/controller.
// app/initializers/clock-service.js
import ClockService from 'app/services/clock';
export default {
name: 'ClockServiceInitializer',
initialize: function(container, application) {
container.register('clock:service', ClockService);
app.inject('controller:interval', 'clock', 'clock:service');
}
};
编辑:看起来是这样的:
export default {
name: 'services',
initialize: function(container, app) {
// Inject into all routes and controllers
// Or if you wanted, into a specific route
app.inject('controller:index', 'clock', 'service:clock');
}
};
我有基本相同的东西,尽管我注入了所有控制器。
在初始化器中:
//container.typeInjection('component', 'store', 'store:main');
application.register('clock:service', ClockService, { singleton: true });
application.inject('controller', 'clock', 'clock:service');
并且在控制器中,像这样使用它:
updateView: {
// ...
}.observes('clock.pulse')