4

我刚开始使用 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;
    }
});

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

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.makeBackbone.js 中的函数。

Backbone.js文档view.make说:

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

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

2 回答 2

5

1)文档说明它需要

jQuery (> 1.4.2) 或 Zepto。

2) 视图组件与 jQuery/Zepto API 紧密耦合。您可以重新实现它,但如果您广泛使用backbone.js,您将重新实现整个界面。

但也许它适用于您的小用例,但由于紧密耦合,我不能保证它有效。

于 2011-07-17T13:31:11.113 回答
4

您也可以使用Spine.js代替主干。

它也与 JQuery 和 Zepto 兼容,但不需要模板。

Spine.js 也不需要下划线,但如果需要,您可以添加为插件。

要了解更多关于这里的好评。

Spine.js 使用控制器概念将数据模型与元素绑定。

于 2011-10-20T18:34:24.037 回答