Где вы размещаете простую переменную в файловой структуре Ember App Kit, чтобы к ней можно было получить доступ с помощью файла шаблона?


Используя этот пример: jsbin

Куда бы я поместил эту строку кода:

App.name = 'White'

В структуре файла EAK, чтобы он отображался на странице индекса, как в Примере?

2 9

2 ответа:

Я не уверен, что это правильный путь. Но в целом EAK пытается избежать загрязнения глобального пространства имен. Таким образом, метод, чтобы глобалы были доступны везде, должен использовать инициализаторы для регистрации зависимости глобалов и вводить их во все контроллеры. Таким же образом ember data вводит хранилище в контроллер.

Внутри app/initializers создать global.js файл

var globals = Ember.Object.extend({
  name: 'Edgar Allen Poe'
});

export default {
  name: "Globals",

  initialize: function(container, application) {
    container.typeInjection('component', 'store', 'store:main');
    application.register('global:variables', globals, {singleton: true});
    application.inject('controller', 'globals', 'global:variables');
  }
};

Это позволит придать их на все контроллеры. Вы можете ссылаться на него в шаблоне типа

{{globals.name}}

Поместить это в инициализаторы здорово, но если ваше приложение не использует много глобальных данных или просто нуждается в флаге, можно использовать его напрямую:

window.App = Ember.Application.create(
  ready: ->
    this.register('current:view', window.current_view, {instantiate: false});
    this.inject('controller', 'isCurrentView', 'current:view');
  rootElement: '#ember-app'
)

Теперь вы получаете доступ к {{isCurrentView}} во всех шаблонах