我设置了一个主干应用程序,允许我在表中列出 mongodb 对象的集合,每个对象旁边都有一个编辑按钮。当点击 Edit 按钮时,editItem Backbone.View 调用它的 render() 函数。然后用户可以更改这些值并点击保存按钮。保存按钮很好地将新值保存到数据库中,但是在 save() 成功回调函数中,我尝试再次渲染列表视图,以便可以查看新值。这也有效,除了因为我以编程方式呈现视图而不是使用路由,地址栏中的 URL 仍然显示:
http://localhost:3000/#/edit/5199180b2908cbb60b000003
但我真的希望它回到刚才
http://localhost:3000/
这只是所有项目的列表视图。
除此之外,如果我尝试单击相同项目的编辑按钮,则不再发生任何事情,但如果我单击编辑任何其他项目,一切正常。所以由于某种原因,最后编辑的项目不能再次编辑。这是我单击保存按钮时发出的保存功能的代码。
save :function(e){
console.log("Saving skill");
var btn = e.target;
var id = $('#skillId').val();
var obj = {
name: $('#skillName').val(),
value: $('#skillValue').val()};
var updatedSkill = new SkillModel({"_id":id});
updatedSkill.fetch();
updatedSkill.set(obj);
updatedSkill.save(null,
{
success: function (model, response) {
console.log("success");
skillsview.render();
},
error: function (model, response) {
console.log("error");
}
});
return true;
}
重新发出这样的视图的正确方法是什么?