Javascript BackboneJS未捕获引用错误:未定义变量
我是backbonejs新手,我能够添加和显示数据库中的联系人。但我无法使用backbonejs执行删除。JSFIDLE 当我尝试删除时,它会给我错误Javascript BackboneJS未捕获引用错误:未定义变量,javascript,jquery,backbone.js,underscore.js,Javascript,Jquery,Backbone.js,Underscore.js,我是backbonejs新手,我能够添加和显示数据库中的联系人。但我无法使用backbonejs执行删除。JSFIDLE 当我尝试删除时,它会给我错误 "Uncaught ReferenceError: Id is not defined " 下面是stacktrace (匿名函数)VM103:2 InjectedScript._EvaluateonVM69:730 InjectedScript.\u evaluateAndWrap VM69:669 InjectedScript.evalua
"Uncaught ReferenceError: Id is not defined "
下面是stacktrace
(匿名函数)VM103:2
InjectedScript._EvaluateonVM69:730
InjectedScript.\u evaluateAndWrap VM69:669
InjectedScript.evaluate VM69:581
这是我的型号
var modelContact = Backbone.Model.extend({
defaults: function () {
return {
Id: 0,
Name: "",
Address: ""
};
},
idAttribute: "Id",
url: function(){
return 'api/Contact/' + this.get("Id");
},
initialize: function () {
if (!this.get("Id")) {
this.set({ "Id": this.defaults().Id });
}
},
clear: function() {
console.log(this.get("Id"));
this.destroy({
error: function(model, response) {
alert("error");
},
success: function(model, response) {
alert("success");
console.log(response);
}
});
}
});
车型系列
var contactCollection = Backbone.Collection.extend({
model: modelContact,
url: function() {
return 'api/Contact';
}
});
var contacts = new contactCollection;
查看
var contactView = Backbone.View.extend({
tagName: "tr",
events: {
"click a.destroy": "clear"
},
template: _.template($("#newContacttemplate").html()),
initialize: function() {
this.model.on("change", this.render, this);
this.model.on('destroy', this.remove, this);
},
render: function () {
if (this.isGoingToBeRemoved) {
return (this);
}
this.$el.html(this.template(this.model.toJSON()));
return this;
},
clear: function (e) {
this.isGoingToBeRemoved = true;
this.model.clear();
}
});
所有错误都已解决这是工作代码问题来自“渲染”
实际上,您正在设置一个值并删除模型:
clears: function (e) {
console.log(e);
console.log(this.model);
this.model.set({ // trigger change
Id: 3
});
this.model.get("Id");
this.model.clear(); // remove your model
}
因为JS是异步的,所以您将同时调用“render”和“clear”。当您调用this.el.html(this.template(this.model.toJSON())代码>将已删除model.get('Id')。。因此,您将尝试调用不存在的东西
render: function () {
// console.log(this.model.toJSON());
this.$el.html(this.template(this.model.toJSON())); // this.model.toJSON() == {}
return this;
},
“清除”模型时,必须阻止渲染方法。您使用哪个版本的主干网?您正在覆盖主干网模型的clear
。您能创建一个JSFIDLE并向我们展示如何创建您的模型吗?defaults
的全部目的是使您不必执行初始化方法中的操作。你可以放下它altogether@Maroshii是的,我正在覆盖它,并对其进行销毁。好的,但是我不认为删除默认值可以解决这个问题。请检查clears函数中的这个fiddle,我已经删除了除此之外的所有代码。model.clear();//但是同样的错误:(好的,这个fiddle确实删除了这个错误,但是我的更改没有发布回服务器。现在我没有收到任何错误。但是更改没有发布到服务器。你的方法“clear”中有“this.destroy();”吗?是的,我在模型中有。之前没有清除:function(){this.destroy();}怀疑它不会进入服务器您是否使用成功和错误选项?()