事件多次触发(Parse.com)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件多次触发(Parse.com)相关的知识,希望对你有一定的参考价值。

我正在使用javascript框架在Parse中编写应用程序。在我看来,我有一个类“新页面”的链接。在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,依此类推。

我假设事件是“积累”,因此单击按钮的次数越多,事件被触发的次数就越多。

我不知道从哪里开始寻找。

答案

迟到的答案,但我刚才有类似的问题。

我犯的错误是我每次需要时都会再次创建视图实例。

这不是Backbone的工作方式。

视图(通常)创建一次。当他们的模型发生变化时,会再次渲染。

每当用户在此行保存时,您似乎都在实例化您的视图

PageEditView();

那是事件堆积的时候。

在启动页面时实例化该视图,然后在更新该视图的模型时对其进行渲染。

在本机bakbone中,事件处理程序可以监听模型更改。不知怎的,它在Parse骨干版本中不起作用(或者我无法使其工作)。所以现在,我手动完成

PageEditView.model = model
PageEditView.render();
另一答案

确保在调用新的PageEditView之前取消置换事件。

以上是关于事件多次触发(Parse.com)的主要内容,如果未能解决你的问题,请参考以下文章

jquery为啥触发多次click事件

js 鼠标移入触发事件。多次触发。

RxJava 作为事件总线被多次调用,即使只触发一次

Socket IO事件多次触发NodeJS

jQuery Mobile 1.3.1 taphold 事件多次触发

js scroll 滚动连续多次触发事件怎么只执行一次?