如何定义在模板帮助器中也可以调用的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”一个普通的字符串时,一切正常。但是在这种情况下,我的模板没有任何价值。我为测试定义了该方法为普通函数的文件,并尝试调用该函数。我得到的错误是该功能不存在。因此,我认为Meteor会在不了解有关我为其定义的方法的任何信息之前尝试呈现该模板。但是我认为这有点不寻常-是吗?
现在有一种新方法可以做到这一点(Meteor 0.9.3.1),它不会污染会话名称空间
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);
});
}
在“创建的”回调中,创建一个ReactiveVariable的新实例(请参阅docs)并将其附加到模板实例。
然后,您调用您的方法,并在回调触发时,将返回的值附加到反应变量。
然后,您可以设置您的助手以返回反应性变量的值(该值现在已附加到模板实例),并且在方法返回时它将重新运行。
但是请注意,您必须添加react-var程序包才能正常工作
$ meteor add reactive-var
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句