这是关于如何开始使用模板的一个非常基本的问题。这实际上是我第一次使用骨干网,因此对如何改进我的代码的任何其他指示表示赞赏:
示例在这里:http: //jsfiddle.net/H93Ej/12/
对于以下代码段:
addFurnitureLi: function (model) {
// Add a new piece of furniture to the DOM list
$("#furniture-list").append("<li>" + model.get('name') + "</li>");
}
我想从使用append()
到使用这样的模板:
<script id="furnitureTemplate" type="text/html">
<li>{{ name }}</li>
</script>
但是我不知道如何将上述脚本模板集成到addFurnitureLi
函数中。另外,我觉得这个addFurnitureLi
功能本质上是在页面上“呈现”HTML,所以我还有另一个问题——那个功能和“官方”功能有什么区别render
?
谢谢你教育我!
下面列出了完整的应用程序代码:
(function($) {
Furniture = Backbone.Model.extend({
defaults: {
"name" : null,
"quantity" : 1
}
});
Furnitures = Backbone.Collection.extend({
initialize: function (models, options) {
this.bind("add", options.view.addFurnitureLi);
//Listen for new additions to the collection and call a view function if so
}
});
FurnitureView = Backbone.View.extend({
el: $("body"),
initialize: function () {
this.furnitures = new Furnitures( null, { view: this });
},
events: {
"click .furniture-add": "addFurnitureModel",
},
addFurnitureModel: function (ev) {
// Add a piece of furniture to the model
var furnitureName = $(ev.currentTarget).data('name'),
furnitureModel = new Furniture({ name: furnitureName });
this.furnitures.add( furnitureModel);
},
addFurnitureLi: function (model) {
// Add a new piece of furniture to the DOM list
$("#furniture-list").append("<li>" + model.get('name') + "</li>");
}
});
var furnitureView = new FurnitureView;
})(jQuery);