服务未定义?

时间:2016-06-13 21:15:29

标签: ember.js

我刚开始使用ember2.5.1。我想尝试创建一个简单的服务,并有一个组件实现它。问题是服务总是未定义的,我似乎无法调用它的方法。

/components/status-component.js

import Ember from 'ember';

export default Ember.Component.extend({
  logger: Ember.inject.service(),

  actions: {
    test() {
      this.get('logger').log("testing");                                               
    } 
  } 
}); 

/services/logger.js

import Ember from 'ember';

export default Ember.Service.extend({
  log(message) {                                                                
    console.log(message);
  }
});

其他信息:我也试图制作可路由的组件,我不确定这是否会破坏服务?我基本上有一个指向虚拟status-proxy-component.hbs的路由,其中​​包含{{status-component}}。 status-component.hbs是另一个文件。

知道为什么这可能不起作用?我是否只是忽略了服务中的某些内容,还是代理人搞砸了?

2 个答案:

答案 0 :(得分:3)

您必须使用get()函数来获取组件属性。

this.get('logger').log("testing");

答案 1 :(得分:0)

我和Ember 2.4.2有同样的问题;该服务已在正确的位置定义,并显示在ember build输出中,但不会显示在我正在运行的ember serve中。

问题原来是热门重装没有接受新服务。杀死服务器并重新运行ember serve可以使服务正常工作。