在我的ember应用程序中,我正在尝试从服务检索数据到组件,但是我收到错误:
TypeError: this.start.toggleProperty is not a function
- 但我有一个属性,有服务。
这是我的组件js:
从'ember'导入Ember;
export default Ember.Component.extend({
start: Ember.inject.service( ),
message: null,
actions: {
pressMe() {
this.start.toggleProperty('isOn'); //throws error
// this.set('message',this.start.importantInfo( ));
// Ember.log(this.start.isOn);
console.log( "start is", this.start.isOn ); //undefined!?
}
}
});
这是我的服务js:
从'ember'导入Ember;
export default Ember.Service.extend({
isOn: false,
importantInfo( ){
return "Important Info is " + this.get('isOn');
}
});
我错过了什么吗?有人建议我正确的方法吗? 提前谢谢。
答案 0 :(得分:1)
答案是,
this.get('start').toggleProperty('isOn')
原因是,
注入的属性是延迟加载的;意思是服务不会 实例化,直到显式调用该属性。所以你 需要使用get函数访问组件中的服务 否则你可能会得到一个未定义的。
参考:
https://guides.emberjs.com/v2.14.0/applications/services/#toc_accessing-services