2016-06-13 165 views
1

我刚开始使用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

​​

其他信息:我也试图使路由组件,我不知道这是搞乱了服务?我基本上有一条指向虚拟status-proxy-component.hbs的路由,其中​​包含{{status-component}}。 status-component.hbs是另一个文件。

任何想法,为什么这可能不工作?我只是想澄清从服务中丢失的东西,还是代理搞乱了它?

回答

3

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

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

+0

哎呦,我还有我的测试代码。这就是我最初使用的,它不起作用。然后我尝试使用this.logger.log,这也没有工作。我会更新我的问题。 – Taztingo

+1

奇怪,它应该工作。没有什么问题。看看这个twiddle:https://ember-twiddle.com/58588a0ce533b11d8a712d1a292fd845?openFiles=services.logger.js%2Ctemplates.components.log-button.hbs – Igor

+0

我最终从头开始创建另一个项目,并能够得到这个加工。感谢您的帮助,不知道以前的项目出了什么问题。 – Taztingo

0

我曾与Ember 2.4.2相同的问题;该服务被定义在正确的位置,并且会出现在ember build输出中,但不会出现在我运行的ember serve中。

问题原来是热的重新加载没有采取新的服务。杀死服务器并重新运行ember serve允许该服务正常工作。