向主干视图中的Cordova事件添加监听器,而不是向所有文档添加

add a listener to Cordova events in a Backbone view and not to all document

本文关键字:添加 文档 监听器 视图 Cordova 事件      更新时间:2023-09-26

我想在Backbone的特定视图中为Cordova事件添加一个侦听器,因此此时我使用document:

var View = Utils.View.extend({
  initialize: function() {
      document.addEventListener( "online", function(  ) { // cordova event
                alert("connected");
        // ....
        }, false);
  }
});

但是每次我改变视图并返回到这个view时,都会添加一个新的事件侦听器,因此文档有许多侦听器,但我只需要一个。如何在视图中只添加一次事件侦听器,避免每次都创建新的事件侦听器?

谢谢

我在过去通过以下方法解决了一个类似的问题:

  • 在应用程序加载时添加监听器,而不是在视图加载时添加

  • 让监听器调用一个函数来检查设置为true或false的特定变量

  • 初始化特定视图时,将变量设为true

  • 当特定视图被替换或初始化任何其他视图时,将该变量设置为false

监听器调用的函数看起来像这样:

function onlineEventCallback () {
    if(app.checkOnline) {
        alert('connected');
    }
}

这将允许侦听器只设置一次,并确保它只在特定视图当前初始化时返回任何内容。