【问题标题】:meteor method assign return to template handlebar流星方法分配返回到模板把手
【发布时间】:2013-12-15 17:53:35
【问题描述】:

这是 Meteor.startup 函数中的方法

return Meteor.methods({
  whatsUp: function() {
   return "Up";
  }
});

这里是触发方法的事件代码

Template.whats_up.events({
  'click .checkwhatsup': function() {
    Meteor.call('whatsUp');
  }
});

这是一个代码,只是将变量直接返回给 DOM

Template.whats_up.up = function() {
  var whats = "Up";
  return whats;
};

我的问题是如何实现与上一个 js 代码相同的功能,

但只有在我点击一个按钮之后。

这里是html模板+把手

<template name="whats_up">
  <button class="checkwhatsup">What is Up?!</button>
  {{up}}
</template>

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    我认为你正在寻找这样的事情:

    Template.whats_up.events({
      'click .checkwhatsup': function() {
        Meteor.call('whatsUp', function(res) {
          Session.set('whats', res);
        });
      }
    });
    
    Template.whats_up.up = function() {
      return Session.get('whats');
    };
    

    这个想法是使用响应式数据源(在本例中为Session)来处理这个问题。您还可以在方法中更新 Collection 并在辅助函数中使用集合游标。这样,方法调用就没有回调函数(并且模板可以在其他用户调用该方法时更新)。取决于您的实际使用情况。

    【讨论】:

    • 问题:如何显示返回的变量,如果它是一个数组,atm它返回[object Object]。
    • 通常你会在把手中使用{{#each yourArray}}。否则,您可以在变量上指定自定义 .toString() 方法。
    • 虽然你确定它实际上是一个数组而不是一个对象? [1,2,3].toString() 返回 "1,2,3",而不是 "[object Object]"
    • 我猜你的意思是光标,然后使用{{#each yourHelperName}}。 Meteor 的{{#each}} 了解如何遍历助手返回的游标。
    • 哎呀,我觉得你把这弄得太复杂了。看一下排行榜示例。在点击事件中,玩家 ID 存储在会话中。其中一个助手使用该会话变量从集合中创建一个游标。就是这样。
    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多