Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Ember cli,如何使用控制器初始化服务?_Ember.js_Ember Cli - Fatal编程技术网

Ember.js Ember cli,如何使用控制器初始化服务?

Ember.js Ember cli,如何使用控制器初始化服务?,ember.js,ember-cli,Ember.js,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('_se

我有一个服务,叫时钟

//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
});
我还有一个初始化器,我想在其中注册时钟服务,然后将其注入我的“间隔”路由/控制器

// 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')

谢谢我的似乎在没有“寄存器”的情况下工作..寄存器和注入之间有什么区别?@Red温室我不得不在这里查找:但是寄存器似乎将你的工厂注册为可用于依赖项注入,而注入实际上将你的对象注入你指定的工厂(控制器、路由等)问题中的文件是根据ember cli标准命名的。因此,即使不注册,它也应该可以工作,因为解析器将自动执行此操作:-)