如何在Meteor中使Cordova插件输出有效?

时间:2015-10-12 09:15:45

标签: cordova meteor

我在我的流星移动应用程序中使用Cordova的network information plugin

全球助手

Template.registerHelper("equals", function (a, b) {
    return (a == b);
});

Template.registerHelper ("networkType", function(){
    return navigator.connection.type;
});

模板

{{#if equals networkType 'none' OR equals networkType 'unknown'}}
    <div style="color:#f00;">WARNING: Looks like no Internet connection is active</div>
{{/if}}

它可以工作但仅在渲染模板时。如果我禁用wifi或3g连接,没有任何变化(我也尝试直接在模板中打印网络信息。它是静态的。)

如果网络连接类型不得暗示用户干预,如何使 networkInfo 全局帮助被动

1 个答案:

答案 0 :(得分:0)

这是未经测试但docs似乎很清楚:

鉴于您的模板代码,我将假设您只关心连接/未连接状态(不是不同设备可能不支持的特定连接类型)。此外,文档中的the browser-quirks部分表明Connedction.UNKNOWN是一个在线状态,所以我只检查Connection.NONE。

Meteor.startup(function(){
  if (navigator.connection.type === Connection.NONE){
    Session.set('networkState', 'Not Connected');
  } else {
    Session.set('networkState', 'Connected');
  }
  document.addEventListener("offline", function(){
      Session.set('networkState', 'Not Connected');
    }, false);

  document.addEventListener("online", function(){
      Session.set('networkState', 'Connected');
    }, false);
});

Template.registerHelper ('networkOffline', function(){
  return Session.get('networkState') === 'Not Connected';
}

{{#if networkOffline}}
  <div style="color:#f00;">WARNING: Looks like no Internet connection is active</div>
{{/if}}

如果您需要在各种在线状态之间进行确定,则无法使用回调,并且需要设置轮询解决方案。用以下内容替换2个回调:

Meteor.setInterval(function(){
    Session.set('networkState', navigator.connection.type);
  }, 2000);