从匿名HTTP.call()获取数据

Get data from anonymous HTTP.call()

本文关键字:获取 数据 call HTTP      更新时间:2023-09-26

我很好奇,是否可以从HTTP.call()函数的匿名调用中检索数据,并将数据放入模板中。到目前为止,我在JS中有以下代码:

Template.weather.onCreated( function() {
   this.data = new ReactiveVar(0);
});
Template.weather.helpers({
    data: function () {     
       return Template.instance().data.get();
    },
    get_data: function() {
       HTTP.call('GET', 'http://path.to.server', {}, function(error, result) {
          if (error)
             console.log(error);
          else {
             console.log(result.data); // data is received 
             var tmp = result.data.main); //
             return tmp;
          }
       });
    }
});
Template.weather.events({
    'click': function(event, template) {
       console.log("click");
       template.data.set(Template.instance().data.get());
    }
});

和模板:

<template name="weather">
<div class="container marketing">
    <hr class="featurette-divider">
    <div class="row featurette">
        <div class="col-md-7">
            <h2 class="featurette-heading">Weather</h2>
            <p style="background-color:#ccc">{{data}}</p>           
        </div>
    </div>                      
</div>

但我仍在努力将数据放入模板中。如果有人有任何想法,请与我分享。提前感谢!

是否只加载一次数据?如果是这样,您可能希望将HTTP调用放在onCreated回调中。

此外,HTTP调用回调中的return语句没有分配给任何内容,因此您永远看不到结果。您可能想将其分配给您的模板data属性?

这样的事情应该能为你解决这两个问题。

Template.weather.onCreated( function() {
    var tmpl = this;
    tmpl.data = new ReactiveVar;
    HTTP.call('GET', 'http://path.to.server', {}, function(error, result) {
      if (error)
         console.log(error);
      else
         tmpl.data.set(result.data);
   });
});
Template.weather.helpers({
  data: function () {     
    return Template.instance().data.get();
  }
});

我希望这能有所帮助。我不太确定我是否正确理解了你的问题,例如,我不知道你试图用事件处理程序实现什么,但如果没有其他事情,以上可能会让你朝着正确的方向前进。