Javascript 更新视图的Meteor异步代码

Javascript 更新视图的Meteor异步代码,javascript,asynchronous,meteor,Javascript,Asynchronous,Meteor,所以我试图做的是发出一个HTTPGET请求,然后用响应更新一个视图。由于某种原因,它不起作用。这是我的 我一直遵循这一要点: 在客户机上: Template.search.items = function() { var query = Session.get("query"); console.log(query); var resp; Meteor.call("search", query, function(err, res) { conso

所以我试图做的是发出一个HTTPGET请求,然后用响应更新一个视图。由于某种原因,它不起作用。这是我的

我一直遵循这一要点:

在客户机上:

Template.search.items = function() {
    var query = Session.get("query");
    console.log(query);
    var resp;
    Meteor.call("search", query, function(err, res) {
        console.log(res);
        //return res;
        return [1,2,4];
    });
};
在服务器上:

Meteor.methods({
    search: function(query) {
        var fut = new Future();
        // var onComplete = fut.resolver();

        Meteor.http.get("http://localhost:4242/autocomplete/"+query, function(err, res) {
            var content = res.content;
            var resp = JSON.parse(content);
            console.log(resp);
            fut.ret(resp)
        });
        return fut.wait();
    }
});
从我的观点来看:

<template name="search">
<h1>test</h1>
<table class="table table-hover">
<tbody>
  {{#each items}}
    {{> searchItem}}
  {{/each}}
</tbody>

测试
{{{#每项}
{{>searchItem}
{{/每个}}


似乎如果我从Meteor.call函数内部返回,则不会向视图发送任何内容。有什么想法吗?

在客户端中,没有光纤或任何东西,
Meteor.call
是异步的,模板不会从帮助器获得任何返回值

从:

在客户机上,如果不传递回调且不在存根中,则调用将返回undefined,并且无法获取方法的返回值。这是因为客户端没有光纤,所以实际上没有任何方法可以阻止方法的远程执行

更改模板后,可以使用回调手动操作模板

Template.search.rendered=function(){
var query=Session.get(“查询”),
table=this.find('.table container');
console.log(查询);
var-resp;
Meteor.call(“搜索”、查询、函数(err、res){
控制台日志(res);
table.innerHTML=Template.search_items(res);//使用其他模板呈现表格
});
}

我正在使用这个解决方案,更复杂,但没有会话。 但更好的方法是在后台使用一些模型(模板可以用model-with{{{#with}}handlebar调用)。 我将只展示这个原则

和html格式:

{{#each search.getResult}}
  {{>searchItem}}
{{/each}}
{{#each search.getResult}}
  {{>searchItem}}
{{/each}}