junk1114
@junk1114
Web-программист

Укажите, пожалуйста, на изъяны в коде на Backbone.js?

Изучаю Backbone.js, идет со скрипом. Подскажите, что в этом простом примере можно улучшить?
jsFiddle
  • Вопрос задан
  • 285 просмотров
Пригласить эксперта
Ответы на вопрос 3
STJ
@STJ
Front-end developer
По сути пример нормальный. Бекбон на то и создан, что бы вы делали все сами и как хотите.
Разве что посоветую марионетку, она облегчит ваши страдания от бекбона.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
render: function(person) {
        var that = this;
        this.$el.empty();
        this.collection.each(function(person) {
            var personView = new PersonView({model: person});
            that.$el.append(personView.render().el);
        });
        return this;
    }


Collection#each это всего лишь закаррированный _.each, который третьим аргументом принимает контекст для итератора. То есть можно переписать так:
render: function(person) {
        this.$el.empty();
        this.collection.each(function(person) {
            var personView = new PersonView({model: person});
            this.$el.append(personView.render().el);
        }, this);
        return this;
    }

А еще этот кусок будет тормозить тем сильнее, чем больше элементов будет в списке.
Я обычно не делаю по вьюхе на каждый элемент, хватает одной вьюхи на весь список.

Ну по мелочи — отступы, всегда использовать {}, определиться, двойные или одинарные кавычки, не использовать однобуквенные переменные и параметры функций (что это за e — error, exception, event?).
В остальном криминала нет:)
Ответ написан
flamefork
@flamefork
Фигачу в PLEX
PersonView.prototype.render вызывается 2 раза: 1 раз в конструкторе (не стоит так делать) и один раз в цикле рендера коллекции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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