Требуются ли представления Backbone.js для jQuery или Zepto? (Или: почему я получаю «Uncaught TypeError: undefined не является функцией»?) - PullRequest
4 голосов
/ 17 июля 2011

Я только начинаю с Backbone.js. У меня подклассы Backbone.Model и Backbone.View:

var Message = Backbone.Model.extend();

var MessageView = Backbone.View.extend({
    tagName: 'div',
    className: 'message',
    template: _.template('{{ html }}'),

    render: function(){
        this.template({
            html: this.model.html
        });
        this.el.className.append(' ' + this.model.type);

        return this;
    }
});

Затем я попытался создать экземпляр каждого из них:

var message = new Message({html: html, type: type});
var messageView = new MessageView({model: message});

Последняя строка строки вызывает ошибку (в Chrome 12): Uncaught TypeError: undefined is not a function. Эта ошибка прослеживается до функции f.extend.make в Backbone.js.

Документация Backbone.js по view.make гласит:

Удобная функция для создания элемента DOM данного типа (tagName) с необязательными атрибутами и содержимым HTML. Используется внутри для создания начального view.el.

  1. Требуется ли jQuery или Zepto?
  2. Могу ли я удалить эту зависимость, переопределив view.make в моем вызове Backbone.View.extend?

Ответы [ 2 ]

5 голосов
/ 17 июля 2011

1) В документации говорится, что для этого требуется

либо jQuery (> 1.4.2), либо Zepto.

2) Компонент просмотра тесно связан сJQuery / Zepto API.Вы можете переопределить его, но если вы будете активно использовать backbone.js, вы переопределите весь интерфейс.

Но, возможно, он работает с вашим небольшим вариантом использования, но из-за тесной связи я не гарантирую, что онработы.

4 голосов
/ 20 октября 2011

Вы также можете использовать Spine.js вместо магистрали.

Он также совместим с JQuery и Zepto, но не нужен для шаблонов.

Spine.js тоже не нуждается в подчеркивании, но вы можете добавить его в качестве плагина, если вам нужно.

Чтобы узнать больше о хорошем обзоре здесь .

Spine.js использует концепцию контроллера для связывания модели данных с элементами.

...