[英]passing model object to view in backbone
我一直試圖傳遞一個模型對象,在我的模板中進行評估,但沒有運氣。 我試過以下但沒有運氣
dashboardmodel.js
var myMod = Backbone.Model.extend({
defaults: {
name: "mo",
age: "10"
}
});
myview.js
var dashView = Backbone.View.extend({
el: '.content-area',
this.mymodel = new myMod({}),
template: _.template(dashBoardTemplate, this.mymodel),
initialize: function() {
},
render: function() {
this.$el.html(this.template);
return this;
}
// more javascript code.............
dahboard.html
<p> Hello <%= name %> </p>
PS:我正在使用下划線模板引擎
此外,將模型傳遞給視圖的方式也不靈活,因為您將傳遞模型的實例,而不是默認模型。 因此,你可能想要挑出來
this.mymodel = new myMod({}),
(順便說一句,上面的行在我的Chrome瀏覽器中給出了錯誤消息,因為“=”符號)
然后,假設您有一個實例A:
A = new myMod({"name": "World", "age":100})
然后將其傳遞給您的視圖:
myview = new dashView({mymodel: A})
還有一步,你要做的就是調用渲染功能:
myview.render();
這是一個完整的解決方案:
<html>
<script src="jquery-1.10.2.min.js"></script>
<script src="underscore-min.js"></script>
<script src="backbone.js"></script>
<body>
<script type="text/template" id="dashBoardTemplate">
<p> Hello <%= name %> </p>
</script>
<div class="content-area">
</div>
<script type="text/javascript">
var myMod = Backbone.Model.extend({
defaults: {
name: "mo",
age: "10"
}
});
var dashView = Backbone.View.extend({
el: '.content-area',
template: _.template($("#dashBoardTemplate").html()),
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
mymod = new myMod({"name": "World", "age":100});
myview = new dashView({model:mymod});
myview.render();
</script>
</body>
</html>
如果你想學習backone.js,請閱讀這本開源書籍,它讓我入門:
您需要使用getter語法獲取Backbone Model的屬性,因此您需要將模板重寫為:
<p> Hello <%= obj.get('name') %> </p>
或者,在調用_.template
時,您需要將模型轉換為普通的JS對象。使用.toJSON()
(創建模型的克隆)或.attributes
屬性可以執行以下操作:
template: _.template(dashBoardTemplate, this.mymodel.toJSON())
附注:您應該考慮將模板渲染邏輯移動到視圖中。 因為當前代碼在聲明視圖時呈現模板,而不是在調用render
方法時呈現模板。 所以你可能得到意想不到的結果 所以你的代碼看起來像這樣:
template: _.template(dashBoardTemplate), //only compile the template
render: function() {
this.$el.html(this.template(this.mymodel.toJSON()));
return this;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.