我正在尝试将数据传递到 Backbone.js 中的
SingleTodo
视图。但是,它没有正确通过。代码:
temp.html
<h1>This is Temp</h1>
<div id="app"></div>
<script type="text/template" id="app-template">
Title: <%= title %><br/>
isCompleted: <%= isCompleted %>
</script>
temp.js
const SingleTodo = Backbone.Model.extend({
defaults: {
title: "",
isCompleted: false
}
});
const TodoView = Backbone.View.extend({
el: "#app",
template: _.template($("#app-template").html()),
initialize: function () {
this.model = new SingleTodo();
this.render();
},
render: function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
$(document).ready(function () {
const todoView = new TodoView();
todoView.model.set({
title: "A simple to-do",
isCompleted: true
});
});
我的代码有什么问题导致我没有得到预期的输出?
您在
initialize
的 TodoView
方法中缺少以下行:
this.listenTo(this.model, 'change', this.render);
旁白:我建议不要在视图的
this.model
方法中设置 initialize
,而是从外部传递它。在您的示例中,更改 $(document).ready
处理程序的第一行:
const todoView = new TodoView({model: new SingleTodo()});