0

テーブルに mongodb オブジェクトのコレクションを一覧表示できるバックボーン アプリをセットアップしました。それぞれの横に [編集] ボタンがあります。[編集] ボタンをクリックすると、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;
                }

このようなビューを再送信する正しい方法は何ですか?

4

1 に答える 1

1

私はそれを考え出した。それは本当に簡単で、必要なものだけでした:

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

それ以外の:

skillsview.render();
于 2013-05-19T20:11:22.217 に答える