如何正确地发出将在Backbone中呈现视图的路由

时间:2013-05-19 19:03:22

标签: node.js backbone.js underscore.js

我有一个骨干应用程序设置,允许我在表格中列出一组mongodb对象,每个对象旁边都有一个“编辑”按钮。单击“编辑”按钮时,editItem Backbone.View将调用其render()函数。然后,用户可以更改值并点击保存按钮。保存按钮将新值保存到数据库就好了,但是在save()成功回调函数中,我尝试再次渲染列表视图,以便可以查看新值。这也有效,除了因为我以编程方式呈现视图而不是使用路由,地址栏中的URL仍显示:

http://localhost:3000/#/edit/5199180b2908cbb60b000003

但我真的希望它回到

http://localhost:3000/

这只是所有项目的列表视图。

除此之外,如果我尝试单击SAME项目的“编辑”按钮,则根本不会发生任何事情,但如果我单击“编辑”到任何其他项目,一切正常。因此,由于某种原因,最后编辑的项目无法再次编辑。这是我单击保存按钮时发出的保存功能的代码。

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;
                }

重新发出像这样的视图的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我明白了。这很简单,只需要:

app_router.navigate('/', {trigger:true});

而不是:

skillsview.render();