我正在尝试使用 Backbone.js 创建一个代码。用户将文本输入到两个字段Item和price中。然后将这些信息附加到一个表中,并为输入的每个输入对创建一个新行。
我已经为表格创建了一个模板。在创建视图时我的问题是,由于item和price的文本字段中的数据需要排序到相应的单元格中,我如何正确地追加新行。我可以只为行创建一个视图吗?还是需要为每个单元格都创建一个视图?
<div id="container">
<script id="grocery-list-template" type="text/template">
<table>
<thead>
<tr>
<th>Item</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td><%=something to get item%></td>
<td><%=something to get the price%></td>
<td></td>
<td><button class="complete"></button><button class="remove"></td>
</tr>
</tbody>
</table>
</script>
</div>
这基本上就是我要做的,但是我不知道如何指定行和单元格?我必须使用标记名为每个单元格创建一个视图吗:td还是只保留标记名:tr并将数据路由到适当的单元格中?我发现了一个使用li元素附加列表的示例,所以我尝试将其中的一些元素修改为适合我的代码
var TableView = Backbone.View.extend({
tagname: "tr",
classname: "itemAndprice",
template:_.template($("grocery-list-template").html()),
render: function() {
this.$el.html(this.template(this.model.toJSON()));
this.$el.attr("id", this.model.id);
if (this.model.get('done')) this.$el.addClass('done');
$("#GroceryList").append(this.$el);
return this;
},
1条答案
按热度按时间mum43rcc1#
您可以为整行创建一个视图。对于每一行,您都需要一个带有
item
和price
属性的行模型,您可以将这些属性传递到行视图的构造函数中。这看起来很像您代码中的TableView
(除了我希望将其命名为RowView
之外,TableView
是一个不同的“父”视图)假设您的模型包含
item
和price
属性,那么row-view-template应该包含然后,
this.model.toJSON()
将为您提供一个包含item
和price
属性的哈希值,该哈希值将被传递到this.template
,并使用相关值填充<%=item%>
和<%=price%>
。您还可以查看下划线的模板函数以获得更多信息。
但是请注意行视图和表视图应该是两个不同的视图。从代码中可以看出,您有一个适合表视图的模板(其中还包含一个不应该存在的行)和一个适合行视图的视图。
有了两个视图,您可以在table-view中传递一个行模型集合,table-view将遍历该集合,并为每个模型添加一行(-view)。当用户创建新项时,您可以将一个模型添加到集合中,并重新呈现表。
希望这对你有帮助。