Backbone.js视图需要jQuery还是Zepto?(或者:为什么我得到"Uncaught TypeError:undefined不是函数"?)

Pau*_*ite 4 javascript jquery backbone.js zepto

我刚刚开始使用Backbone.js.我子类Backbone.ModelBackbone.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;
    }
});
Run Code Online (Sandbox Code Playgroud)

然后我尝试创建每个实例:

var message = new Message({html: html, type: type});
var messageView = new MessageView({model: message});
Run Code Online (Sandbox Code Playgroud)

最后一行行导致错误(在铬12): Uncaught TypeError: undefined is not a function.它将此错误追溯回f.extend.makeBackbone.js中的函数.

Backbone.js上的文档view.make说:

用于创建给定类型(tagName)的DOM元素的便捷功能,具有可选属性和HTML内容.在内部用于创建初始view.el.

  1. 它需要jQuery还是Zepto?
  2. 我可以通过覆盖view.make我的电话来删除这种依赖Backbone.View.extend吗?

mar*_*arc 5

1)文档说明它需要

jQuery(> 1.4.2)或Zepto.

2)View Component与jQuery/Zepto API紧密耦合.你可以重新实现它,但如果你广泛使用backbone.js,你将重新实现整个界面.

但也许它适用于你的小用例,但由于紧耦合,我不能保证它的工作原理.