为什么使用this.get('serviceName')代替this.serviceName?

时间:2019-02-27 15:33:28

标签: javascript ember.js ecmascript-6 ember-cli

在Ember.JS中,这样做是否有充分的理由:

import Service, { inject } from '@ember/service';

export default Service.extend({
ajax: inject(),
getAll() {
    return this.get('ajax').request(`api/users/`, {
        method: 'GET',
        contentType: 'application/json'
    });
}
});

与之相反?

import Service, { inject } from '@ember/service';

export default Service.extend({
ajax: inject(),
getAll() {
    return this.ajax.request(`api/users/`, {
        method: 'GET',
        contentType: 'application/json'
    });
}
});

第二种方法看起来更干净的IMO,但是我想知道是否有充分的功能性理由使用.get()而不是直接引用服务。

1 个答案:

答案 0 :(得分:9)

未来是this.whateverProperty

this.get是在JS缺乏很多功能并且很多文档尚未更新的时候实现的。

官方余烬指南已经更新:

https://guides.emberjs.com/release/applications/services/#toc_accessing-services

从Ember 3.1开始,您可以在任何地方使用本机getter。