Пожалуйста, посмотрите на эту статью из путеводителя ember https://guides.emberjs.com/release/components/triggering-changes-with-actions/#toc_invoking-actions-directly-on-component-collaborators
Вы сделали правильную вещь, как только вы уже установили обновленное значение этой переменной в вашем сервисе, это значение будет таким же, пока вы не проинструктироваликод для изменения значения этой переменной.Чтобы ответить на ваш вопрос, Can i access ember service variables in my whole application?
Да, вы можете сделать следующее, чтобы получить доступ к переменной в вашем приложении.
Предполагая, что это ваша переменная и имя службы //services/current-session.js
import Service from '@ember/service';
export default Service.extend({
foo: 'foo bar baz',
});
Если вы хотите получить к нему доступ в своем controller
, сделайте следующее
import Controller from '@ember/controller';
import { computed } from '@ember/object';
import { inject as injectService } from '@ember/service';
export default Controller.extend({
currentSession: injectService(),
bar: computed('currentSession.foo', function() {
return this.currentSession.foo;
}),
});
Если вы хотите получить к нему доступ в своем компоненте
import Component from '@ember/component';
import { computed } from '@ember/object';
import { inject as injectService } from '@ember/service';
export default Component.extend({
currentSession: injectService(),
bar: computed('currentSession.foo', function() {
return this.currentSession.foo;
}),
});
Подход, описанный выше, основан на угасающем клике 3.4
Вот угасший твиддл, с которым вы можете поиграть.https://ember -twiddle.com/b92a7d4fa03a1699a5b8a79aca5d2782? OpenFiles = controllers.application.js% 2C
Если вы хотите изменить значение вашей переменной в вашей службе через контроллер, вы можете сделать этоэто
import Controller from '@ember/controller';
import { set } from '@ember/object';
import { inject as injectService } from '@ember/service';
export default Controller.extend({
currentSession: injectService(),
actions: {
change() {
this.currentSession.set('foo', 'foo bar baz please');
}
}
});