簡體   English   中英

Backbone.js 視圖是否需要 jQuery 或 Zepto? (或者:為什么我會收到“未捕獲的類型錯誤:未定義不是函數”?)

[英]Do Backbone.js views require jQuery or Zepto? (Or: why am I getting “Uncaught TypeError: undefined is not a function”?)

我剛開始使用 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.make中的 function f.extend.make。

view.make上的view.make文檔說:

方便 function 用於創建給定類型 (tagName) 的 DOM 元素,具有可選屬性和 HTML 內容。 在內部用於創建初始view.el

  1. 是否需要 jQuery 或 Zepto?
  2. 我可以通過在對Backbone.View.extend的調用中覆蓋view.make來刪除這種依賴關系嗎?

1)文檔說明它需要

jQuery (> 1.4.2) 或 Zepto。

2) 視圖組件與 jQuery/Zepto API 緊密耦合。 您可以重新實現它,但如果您廣泛使用 backbone.js,您將重新實現整個接口。

但也許它適用於您的小用例,但由於緊密耦合,我不能保證它有效。

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

它還與 JQuery 和 Zepto 兼容,但不需要模板。

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

要了解更多關於這里的好評。

Spine.js 使用 controller 概念將數據 model 與元素綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM