[英]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.model
和Backbone.View
, Backbone.Collection
和Backbone.Model
之間有什么關系? this.model
和this.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.