我已经开始使用backbone.js 创建一个Web 应用程序并且遇到了一些问题。它允许我创建新项目,完全没有问题。但是,它不会将事件绑定到在 render() 方法上创建的按钮。基本上,每次我添加一个新项目时,我都会得到一个编辑和删除按钮,我想将模型绑定到它们,以便我可以回顾性地编辑或删除该特定项目。
我的骨干观点:
ClientView = Backbone.View.extend({
el: $("body"),
initialize: function () {
this.clients = new Clients(null, { view: this });
},
events: {
"click #add-client": "AddClient",
"click .edit-client": "EditClient",
"click #save-client": "SaveNewClient"
},
render: function (model) {
var compiled_template = _.template($("#Client-Template").html());
$("#client-rows").append(compiled_template(model.toJSON()));
$("input:button", $("#client-rows")).button();
$("#addClientModal").modal("hide");
return this;
},
AddClient: function (model) {
$("#addClientModal h3").text("Add Client");
$("#addClientModal").modal("show");
},
EditClient: function (model) {
$("#addClientModal h3").text("Edit Client");
$("#addClientModal").modal("show");
},
SaveNewClient: function () {
var client_firstName = $("#clientFirstName").val();
var client_lastName = $("#clientLastName").val();
var client_email = $("#clientEmail").val();
var client_address = $("#clientAddress").val();
var client_model = new Client({ FirstName: client_firstName, LastName: client_lastName, Email: client_email, Address: client_address });
this.clients.add(client_model);
$("#clientFirstName, #clientLastName, #clientEmail, #clientAddress").val("");
$("#addClientModal").modal("hide");
}
});
我的模板:
<script id="Client-Template" type="text/template">
<tr>
<td><%=FirstName%></td>
<td><%=LastName%></td>
<td><%=Address%></td>
<td>
<input type="button" class="btn btn-info .edit-client" value="Edit" />
<input type="button" class="btn btn-danger" value="Delete" />
</td>
</tr>
</script>
不幸的是,我无法粘贴整个应用程序,但如果幸运的话,应该相对简单地注意到我提供的内容哪里出错了。显然,如果您需要我提供更多详细信息,请务必询问。