Javascript 更新视图的Meteor异步代码
所以我试图做的是发出一个HTTPGET请求,然后用响应更新一个视图。由于某种原因,它不起作用。这是我的 我一直遵循这一要点: 在客户机上: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
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}}