javascript - 如何在模板助手中使用 Meteor 方法

标签 javascript meteor

如何定义一个可以在模板助手中调用的 Meteor 方法?

我有这两个文件:

文件:lib/test.js

Meteor.methods({
    viewTest : function (str) {
        return str;
    }
});

文件:client/myView.js

Template.helloWorld.helpers({
    txt : function () {
        var str = Meteor.call('viewTest', 'Hello World.');
        return str;
    }
});

当我给“str”一个普通字符串时,一切正常。但在这种情况下,我的模板没有任何值(value)。我为了测试而在同一个文件中定义了该方法,其中该方法是一个普通函数,并尝试调用该函数。我得到的错误是该函数不存在。所以我认为 Meteor 会在了解我为其定义的方法之前尝试渲染模板。但我认为这有点不寻常 - 不是吗?

最佳答案

现在有一种新方法可以做到这一点(Meteor 0.9.3.1),它不会污染 session 命名空间

Template.helloWorld.helpers({
    txt: function () {
        return Template.instance().myAsyncValue.get();
    }
});

Template.helloWorld.created = function (){
    var self = this;
    self.myAsyncValue = new ReactiveVar("Waiting for response from server...");
    Meteor.call('getAsyncValue', function (err, asyncValue) {
        if (err)
            console.log(err);
        else 
            self.myAsyncValue.set(asyncValue);
    });
}

在“created”回调中,您创建 ReactiveVariable 的新实例(请参阅 docs )并将其附加到模板实例。

然后,您调用您的方法,当回调触发时,您将返回的值附加到 react 变量。

然后,您可以设置帮助程序以返回 react 变量的值(现在已附加到模板实例),并且当方法返回时它将重新运行。

但请注意,您必须添加reactive-var包才能使其工作

$ meteor add reactive-var

关于javascript - 如何在模板助手中使用 Meteor 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35967351/

相关文章:

javascript - 为什么我用javascript innerHTML调用我的图片不显示?

javascript - Meteor 集合中的 2 个出版物良好实践

virtual - Meteor 如何处理多个虚拟主机?

git - Meteor:调用方法执行shell(克隆git repo)

javascript - 在自定义事件函数内设置 ReactiveDict() 变量

javascript - Meteor:在客户端使用 FileReader 上传图像文件,在服务器上使用 Npm.require ("fs")

javascript - 将客户端的API Secret保存在浏览器中,通过JS访问

javascript - Cordova/Phonegap 在主 Cordova webview 中加载外部站点

javascript - 失败的 Prop 类型 : Invalid prop `app` supplied to `Body` , 需要一个 ReactElement

javascript - 在 json2html 中访问嵌套的 JSON