0
我有一個服務,稱爲時鐘Ember cli,如何使用控制器初始化服務?
//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
});
,我想註冊的時鐘服務,然後將其注入到我的「間隔」路線/控制器我也有一個initialzer。
// 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');
}
};
謝謝!我似乎沒有「註冊」的工作。註冊和注入有什麼區別? – redconservatory 2015-03-04 12:57:55
@redconservatory我不得不在這裏查看它:http://emberjs.com/api/classes/Ember.Application.html但註冊似乎註冊您的工廠作爲依賴注入可用,而注入實際上注入您的對象到工廠你指定(控制器,路由等) – Jon 2015-03-04 13:04:19
問題中的文件根據ember-cli標準命名。所以它應該工作,即使沒有註冊,因爲解析器會自動做到這一點:-) – AWM 2015-03-06 13:17:35