1

JavaScript フレームワークを使用して、Parse でアプリを作成しています。私の見解では、クラス「new-page」とのリンクがあります。JS コードには、次のものがあります。

    events: {
        "click .new-page" : "createPage",
    }

createPage は次のとおりです。

    createReel: function() {
        var self = this;
        // Get current pagelist
        var pages= new PageList;
        pages.query = new Parse.Query(Page);
        pages.query.equalTo("owner", Parse.User.current());
        pages.query.ascending("order");
        pages.fetch({
            success: function(pagelist) {
                var newPage = new Page;
                newPage .save({
                    success: function(newpage) {
                         // Redirect to page edit
                         new PageEditView();
                    }
                });
            }
        });
    }

初めて、これはうまくいきます - 新しいページが作成され、そのページの編集モードになります。しかし、[ページを追加] ボタンを使用してビューに戻り、もう一度クリックすると、2 つの新しいページが表示されます。もう一度やると、4 になります。

ボタンがクリックされる回数が増えるほど、イベントが発生する回数が増えるように、イベントが「構築」されていると思います。

どこから探し始めればよいかわかりません。

4

2 に答える 2

1

遅い答えですが、同様の問題がありました。

私が犯した間違いは、必要になるたびにビュー インスタンスを作成し直してしまったことです。

それはバックボーンが機能する方法ではありません。

ビューは (通常) 1 回作成されます。モデルが変更されると、再びレンダリングされます。

ユーザーがこの行で保存するたびにビューをインスタンス化しているようです

PageEditView();

それはイベントが積み重なったときです。

ページを起動するときに一度そのビューをインスタンス化し、そのビューのモデルを更新するたびにレンダリングします。

ネイティブ バックボーンでは、イベント ハンドラーはモデルの変更をリッスンできます。どういうわけか、Parse バックボーン バージョンでは動作しません (または、動作させることができません)。だから今のところ、私は手動でそれを行います

PageEditView.model = model
PageEditView.render();
于 2014-10-11T17:42:13.647 に答える