EmberJS - 无法从Component获得“服务”属性

时间:2017-07-19 06:25:29

标签: javascript ember.js

在我的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');
    }
});

我错过了什么吗?有人建议我正确的方法吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

答案是,

this.get('start').toggleProperty('isOn')

原因是,

  

注入的属性是延迟加载的;意思是服务不会   实例化,直到显式调用该属性。所以你   需要使用get函数访问组件中的服务   否则你可能会得到一个未定义的。

参考:
https://guides.emberjs.com/v2.14.0/applications/services/#toc_accessing-services