Javascript Meteor js显示方法的结果
我有一个模板,我正试图显示一个变量,它应该从一个方法中修改 下面是我的代码的样子 htmlJavascript Meteor js显示方法的结果,javascript,meteor,Javascript,Meteor,我有一个模板,我正试图显示一个变量,它应该从一个方法中修改 下面是我的代码的样子 html {{test}} 服务器: if (Meteor.isServer) { Meteor.methods({ callApi: function (term) { this.unblock(); try { const result = HTTP.call('GET', 'https://www.goo
{{test}}
服务器:
if (Meteor.isServer) {
Meteor.methods({
callApi: function (term) {
this.unblock();
try {
const result = HTTP.call('GET', 'https://www.googleapis.com/youtube/v3/search')
return result;
} catch (e) {
// Got a network error, timeout, or HTTP error in the 400 or 500 range.
console.log(e);
return false;
}
}
});
}
客户
Template.body.helpers({
test: 'test'
});
Template.body.events({
'submit .media-Search'(event, template) {
// Prevent default browser form submit
event.preventDefault();
// Get value from form element
const target = event.target;
const text = target.text.value;
Meteor.call("callApi", text, function(error, results) {
if (error)
console.log(error);
template.test = results.data.items[0].snippet.channelId; //results.data should be a JSON object
});
// Clear form
target.text.value = '';
},
});
变量确实会更改,但更改不会显示在html页面上,我做错了什么
非常感谢 您需要将Meteor方法结果存储在反应变量/反应字典中:
import { ReactiveVar } from 'meteor/reactive-var';
Template.body.onCreated(function() {
this.test = new ReactiveVar(); // create reactive var
})
稍后在提交活动中:
// ...
Meteor.call("callApi", text, function(error, results) {
if (error) console.log(error);
// set value for reactive variable
template.test.set(results.data.items[0].snippet.channelId);
});
您的模板帮助器当前是一个字符串(我想知道构建系统不会对此抛出错误),但应该是一个返回更新的反应变量的方法:
Template.body.helpers({
test() {
return Template.instance().test.get();
}
});
您应该阅读更多关于Blaze和ReactiveVar文档的内容:
您需要将Meteor方法结果存储在反应变量/反应字典中:
import { ReactiveVar } from 'meteor/reactive-var';
Template.body.onCreated(function() {
this.test = new ReactiveVar(); // create reactive var
})
稍后在提交活动中:
// ...
Meteor.call("callApi", text, function(error, results) {
if (error) console.log(error);
// set value for reactive variable
template.test.set(results.data.items[0].snippet.channelId);
});
您的模板帮助器当前是一个字符串(我想知道构建系统不会对此抛出错误),但应该是一个返回更新的反应变量的方法:
Template.body.helpers({
test() {
return Template.instance().test.get();
}
});
您应该阅读更多关于Blaze和ReactiveVar文档的内容: