我刚开始使用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是另一个文件。
知道为什么这可能不起作用?我是否只是忽略了服务中的某些内容,还是代理人搞砸了?
答案 0 :(得分:3)
您必须使用get()函数来获取组件属性。
this.get('logger').log("testing");
答案 1 :(得分:0)
我和Ember 2.4.2有同样的问题;该服务已在正确的位置定义,并显示在ember build
输出中,但不会显示在我正在运行的ember serve
中。
问题原来是热门重装没有接受新服务。杀死服务器并重新运行ember serve
可以使服务正常工作。