Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor js显示方法的结果_Javascript_Meteor - Fatal编程技术网

Javascript Meteor js显示方法的结果

Javascript 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

我有一个模板,我正试图显示一个变量,它应该从一个方法中修改

下面是我的代码的样子

html

{{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文档的内容: