Корректен ли код? Или это можно сделать более деликатно?

Добавил вьюху для событий касаемых одной панельки.
Правильно ли я все делаю? Вроде работает но вот чую, что использую инструменты бэкбона не по назначению!
Правильно ли изменять DOM-элементы(в данном случае изменение css-класса) напрямую, минуя модель? И считается ли хорошим тоном создание отдельной вьюхи для подобных вещей?

EA.Views.LeftPanel = Backbone.View.extend({
        el: '#left-panel',

        events: {
            'click .email-folder': 'openFolder'
        },

        openFolder: function(elem) {
            $('.email-folder').removeClass('active');
            $(elem.target).addClass('active');
        }
    });
  • Вопрос задан
  • 183 просмотра
Решения вопроса 2
Я правильно понимаю, что .email-folder - это пункты меню?
Такой подход вполне имеет право на жизнь, на мой взгляд.
Конечно, по-хорошему, нужно создавать модель, заводить у нее свойство is_active и рендерить view в соответсвии с ней, в этом весь смысл MVVM-фреймворков.
Но вот в таких простых ситуациях я предпочитаю не усложнять.
Вот если вам понадобится, например, хранить состояние панели в localStorage, или программно открывать папки - тогда точно нужно использовать коллекцию моделей.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Необязательно на каждый чих заводить отдельную модельку. Тем более нет смысла хранить чисто визуальное состояние в бизнесовой модели.
Чем меньше вьюха — тем проще вносить изменения, но без фанатизма.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы