【问题标题】:How can I output the Meteor Session key value pairs in a Handlebars template?如何在 Handlebars 模板中输出 Meteor Session 键值对?
【发布时间】:2012-05-31 15:58:42
【问题描述】:

我想在 Meteor 车把模板中输出 Meteor Session 键值对。

http://docs.meteor.com/#session

我尝试从我的 Template.name.name js 文件中返回 Session 和 Session.keys,然后在把手中返回 #each 无济于事。

我尝试了以下方法来迭代 Session 键并尝试返回一个对象,但它不起作用。

我尝试了以下方法来迭代会话键并返回一个看起来像这样的 JSON 数据列表。 {"myname":"我的价值","myname2":"myvalue2","myname3":"myvalue"}

_.each(Session.keys, function(element, index, list){

});

【问题讨论】:

  • 我认为在 Session 中使用一个对象可能更有意义: Template.something.user = Session.get('user');其中用户是一个对象。这样你就不会得到 var name 冲突。如果迭代有效,我会用它把它全部设置为一个对象,然后也将它设置为一个模板变量。
  • 这适用于单个键/值对,如果您通过键(也称为名称)调用它们。我想迭代 Meteor Session 对象并显示内容。我有它的工作,但我不得不从不同的角度去解决它。此外,在填充 Session 时会感到奇怪,但我认为视图是事先显示的。单独的问题。
  • 是的,我不确定你用它来做什么。看起来会话包也在使用 .keys 属性,所以我认为这是最好的方法。

标签: meteor


【解决方案1】:

这是我问的一个类似问题,7zark7 有一个很好的解决方案

Can I subscribe to Meteor Session for reactive template render updates?

【讨论】:

    【解决方案2】:

    这可能是一个非常丑陋的解决方案,但它现在有效。如果有人找到更好的解决方案,请发布您的答案。显然,您可以将其作为 JSON 或其他格式返回。

    Handlebars.registerHelper('getsessions', function() {
        var a = '<div class="span2"><b>name</b></div><div class="span2"><b>value</b></div><br />';
        _.each(Session.keys, function(element, index, list){
            a = a + '<div class="span2">' + index + '</div>' + 
            '<div class="span2">' + element + '</div><div class="span2"></div><br />';
        });
        return a;
      });
    

    然后我把这个放在模板里

    {{#getsessions }}{{/getsessions}}
    

    它会在 HTML 中显示 Meteor Session 的内容。

    有一个副作用,我必须寻找或发布另一个 SO。我在 Meteor.startup 上填充了一个 Meteor Session 对象,但是上面的代码不会每次都显示内容,或者说大部分时间都不会显示内容,直到下一个视图呈现。

    S

    【讨论】:

    • 为每个键名做一个 session.get ,这应该可以保持新鲜:)。
    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 2015-07-25
    • 2013-09-05
    • 2013-04-25
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    相关资源
    最近更新 更多