kurojneko
@kurojneko

Как получить доступ к объекту Ember, или как сохранить объект на ctrl+s?

Собсно вопрос описывает проблему.
Есть отлавливатель событий, есть несколько табов с редакторами объектов, в обработчике можно узнать какой таб активен, в табе есть информация об объекте (имя, ид, или еще что либо, по желанию) Как из обработчика нажатий, получить объект и сохранить его?

document.body.addEventListener('keydown', function (e) {
   if ((e.keyCode === 83) && (e.ctrlKey)) {
      e.preventDefault();
      App.Tabs.tabs("option", "active"); //узнаем активный в данный момент таб
      console.log('ctrl + s');
   }
});
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 2
Kaer_Morchen
@Kaer_Morchen
Разрабатываю web-приложения.
Подход вроде не очень ember-way, вы обработчиком почти изолировались от структуры фреймворка. Вы же не все приложение собираетесь слушать, а только в каком-то разделе.

Можно через миксин сделать в view как-нибудь так:

App.SaveModelMixin = Ember.Mixin.create({
    onGlobalKeyDown: function() {
        Ember.$(document).on('keydown', {view: this}, this.globalKeyDown);
    }.on('didInsertElement'),

    offGlobalKeyDown: function () {
        Ember.$(document).off('keydown', this.globalKeyDown);
    }.on('willDestroyElement'),

    globalKeyDown: function (e) {
        if ((e.keyCode === 83) && (e.ctrlKey)) {
                e.preventDefault();
                App.Tabs.tabs("option", "active"); //узнаем активный в данный момент таб
                console.log('ctrl + s');
                // e.data.view - представление
                // e.data.view.get('controller') - контроллер, можно слать экшены
                // e.data.view.get('controller.model') - модель роута
        }
    }
});


Не уверен правда что это решение крутотягкское.
Ответ написан
kurojneko
@kurojneko Автор вопроса
На стековерфлове посоветовали вот такую весчь github.com/satchmorun/ember-shortcuts, вроде работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы