javascript - 在 Backbone View 中添加 Cordova 事件监听器,而不是所有文档

标签 javascript jquery cordova backbone.js

我想在 Backbone 的特定 View 中为 Cordova 事件添加一个监听器,因此此刻我使用 document< 执行此操作:

var View = Utils.View.extend({

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

});

但每次我更改 View 并返回到此 View 时,都会附加一个新的事件监听器,因此文档有许多监听器,但我只需要一个。 那么,如何向该 View 添加一次事件监听器,并避免每次访问该 View 时都创建新的事件监听器?

谢谢

最佳答案

我过去通过执行以下操作解决了类似的问题:

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

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

  • 初始化特定 View 时,将变量设置为true

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

监听器调用的函数将如下所示:

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

这将允许监听器仅设置一次,并确保它仅在特定 View 当前已初始化时返回任何内容。

关于javascript - 在 Backbone View 中添加 Cordova 事件监听器,而不是所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24371337/

相关文章:

ios - 如何在 Cordova 中启用 c++11?

android - phonegap 地理定位不起作用

cordova - 在平台中手动更改文件是一个好习惯吗?

javascript - webpack-dev-server 不会在代码更改时重新渲染页面(从初始页面导航时)

javascript - 在 iPad iOS 11.4 上的 Mobile Safari 中滚动期间触摸事件仅触发 "once"

javascript - 隐藏在按钮和表格下方的工具提示说明

Javascript 对象文字将属性传递给 jquery 插件选项

javascript - 具有 rowGrouping 的数据表无法隐藏列

javascript - 无法使用 JQuery(或仅使用 javascript)解析复杂的 JSON 响应

php - 多个表单输入,如何提交并保存到mysql