Meteor.status()不是一个被动数据源?

时间:2016-02-26 16:29:27

标签: javascript angularjs meteor reactive-programming angular-meteor

我们正在尝试执行以下操作以在我们的应用上显示连接状态:

this.helpers({
    userBlock: () => {
        //...
        return {
            name: name,
            connectionStatus: Meteor.status().connected
        }
    }
});

然而,在断开服务器之后,帮助程序不会运行。通过$ scope和controller reference将Meteor.status().connected变量直接输出到模板中,也不会看到它的值更新。关于我们如何通过Meteor.status().connected更改让帮助程序重新运行的任何想法?

1 个答案:

答案 0 :(得分:1)

这是我实现的方式,它按预期工作。当服务器关闭时,模板呈现"断开连接"消息,当服务器再次返回时它会消失。

var SHOW_CONNECTION_ISSUE_KEY = 'showConnectionIssue';
Session.setDefault(SHOW_CONNECTION_ISSUE_KEY, false);

Meteor.startup(function () {

   // Only show the connection error box if it has been 5 seconds since
   // the app started
   setTimeout(function () {
       // Show the connection error box
       Session.set(SHOW_CONNECTION_ISSUE_KEY, true);
   }, 5000);
});

Template.header.helpers({
   connected: function() {
       if (Session.get(SHOW_CONNECTION_ISSUE_KEY)) {
           return Meteor.status().connected; 
       } else {
           return true;
       }
}});

并在模板中:

{{#unless connected}}
        <div class="alert alert-danger">
            Disconnected
        </div>
{{/unless}}