jQuery技术:stopListening()竞争条件?

var PlaylistView = Backbone.View.extend({ el: '#expanded-container', initialize: function() { var playlistModel = this.model; this.stopListening(playlistModel.get('songs'), 'add'); var form = this.$('input'); $(form).keypress(function (e) { if (e.charCode == 13) { console.log("hey") var query = form.val(); playlistModel.lookUpAndAddSingleSong(query); } }); this.listenTo(playlistModel.get('songs'), 'add', function (song) { var songView = new SongView({ model: song }); this.$('.playlist-songs').prepend(songView.render().el); }); 

这是我的Backbone视图的片段,我无法弄清楚为什么有时同一个songView呈现两次。 在其他视图中,我手动调用PlaylistView.initialize()而不重新创建视图。 因此,我在初始化开始时取消注册所有事件,以防止它多次侦听同一事件。 它完成了它的工作但只是偶尔一次,同一个songView呈现两次。 我怀疑这可能是某种竞争条件,但我无法弄清楚原因。 有没有人有想法?

    如果playlistModel.get('songs')没有返回相同的对象,可能会发生这种情况,尝试只删除对象所在的事件,如下所示:

     this.stopListening(null, 'add'); 

      以上就是jQuery教程分享stopListening()竞争条件?相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/548020.html

      (0)
      上一篇 2021年1月13日
      下一篇 2021年1月13日

      精彩推荐