簡體   English   中英

骨干錯誤'this.model未定義',請解釋在哪里,如何,什么是'this.model'

[英]Backbone error 'this.model is undefined', please explain where, how, what is 'this.model'

答案可能是在SO,但他們並沒有真正解釋我要問的問題。

每當我將帶有模板的this.model.toJSON()引入視圖時,我總是在Firebug中得到此錯誤: this.model is undefined

現在,SO中的許多答案並沒有真正解釋這個this.model是什么,他們只是解決了提問者的問題。 所以我的問題是:

  • 我該如何解決我的問題?
  • 什么是this.model以及它來自何處或如何定義它並使用它(在錯誤中,它是未定義的)?
  • this.modelBackbone.ViewBackbone.CollectionBackbone.Model之間有什么關系?
  • this.modelthis.models什么區別(注意model末尾的's')?
  • 還有,關於this.collection所有上述問題?

對這個問題感到抱歉,但我對Backbone很新,我在網上,書籍和SO中進行了無數的研究,但似乎沒有人至少做過一篇文章來解釋每個Backbone屬性和屬性是什么。 ...只是沒有深入解釋的教程。 即使在阿迪·奧斯馬尼Todo tutotrial,有沒有深入的解釋this.model即使它使用了很多。

請看我的代碼:

JS / Backbone:

(function($) {
    // model
    var AppModel = Backbone.Model.extend({
        defaults : {
            title : 'App Title',
            version : '0.1'
        }
    });

    // collection
    var AppList = Backbone.Collection.extend({
        model : AppModel,
        url : '#'
    });

    // main app view
    var AppView = Backbone.View.extend({
        el : '#app',

        template : _.template($('#app-template').html()),

        initialize : function() {
            _.bindAll(this, 'render');

            this.render();
            console.log(this.template(this.model.toJSON()));
        },

        render : function() {
            console.log(this.$el);
        }
    });

    var app = new AppView;
}(jQuery));

HTML:

<div id="wrapper">
    <!-- Main App -->
    <div id="app"></div>
</div>

<!-- template with underscore.js -->
<script type="text/template" id="app-template">
    <article>
        <h2>App Name: <%= title %></h2>
        <p>Version: <%= version %></p>
    </article>
</script>

非常感謝

我們一步一步走吧。

1.我如何解決我的問題? 答案: - var app = new AppView({model:AppList});

2. this.model,現在你從答案1得到它,你會得到你的.model。 您需要通過將模型作為參數傳遞將模型設置為視圖。

3.模型是單項。 您可以將其視為數據庫表的單行。 集合是模型的集合,例如DB中的多行

用戶模型示例: -

型號: - 這將包含單個用戶的信息。 集合: - 這將包含多個用戶的信息(每個用戶是用戶模型的實例)。 查看: - 它將成為您的用戶的用戶界面。 在主干中查看有點混淆與名稱“視圖”。 它必須被稱為控制器,因為它們控制模板上的事件列表並操縱集合中的數據及其模型

4.如上所述模型是單個模型,並且集合中的this.models是多個多個模型。 this.models是一個單一模型的數組。

5.我希望上面的回答也將回答你這個問題。

Backbone上有一些約定可以讓它更容易使用。

其中一個約定是,如果將一些特定參數傳遞給構造函數,它們將作為實例屬性(集合,模型...)添加,因此您可以在其他函數中使用它們。

請查看文檔,其中包含的內容非常好: http//backbonejs.org/#View-constructor

暫無
暫無

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

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