的jsfiddle關聯的模型,:http://jsfiddle.net/umgauper/jnf8B/743/Backbone.js的:this.model事件是第一個模型渲染,而不是與DOM元素
我試圖創建一個基本的購物車應用程序。點擊某件商品時,我希望將其標題和價格添加到購物車表中。
我正在爲每個模型創建一個單獨的視圖實例。但是,當單擊某個項目時,添加的表格數據始終是item1模型的模型數據,而不是我期望與單擊的DOM元素關聯的模型數據。爲了獲得點擊元素的模型數據,我需要做些什麼改變?
var app = app || {};
var Item = Backbone.Model.extend({
defaults: {
order: '',
title: '',
price: 0.01,
inCart: false
}
});
var item1 = new Item({order: 1, title: "shoes", price: 30.00});
var item2 = new Item({order: 2, title: "socks", price: 5.00});
var item3 = new Item({order: 3, title: "shirt", price: 20.00});
var ItemsCollection = Backbone.Collection.extend({model: Item});
var items = new ItemsCollection([item1, item2, item3]);
app.ItemView = Backbone.View.extend({
template: _.template($("#item-template").html()),
initialize: function() {
this.render()
},
render: function() {
$("#display").append(this.template(this.model.attributes));
},
el: "#container",
events: {
'click .title': 'moveToCart'
},
moveToCart: function(e) {
e.stopImmediatePropagation();
var title = this.model.get("title");
var price = this.model.get("price");
$("table").append("<tr><td>" + title + "</td><td>" + price + "</td></tr>");
}
});
var itemView1 = new app.ItemView({model: item1});
var itemView2 = new app.ItemView({model: item2});
var itemView3 = new app.ItemView({model: item3});
<div id="container">
<div id="display">
</div>
<table id="cart">
<thead>
<th>Title</th>
<th>Price</th>
</thead>
</table>
</div>
<script type="text/template" id="item-template">
<div>
<p class="title"><%= title %></p>
<p class="price">$<%= price %></p>
</div>
</script>
啊哈!現在你已經指出了,似乎每個視圖都應該有自己的el。謝謝你的幫助!並提醒在渲染中添加'return this'語句。 – unamaga 2014-11-03 19:41:53