Javascript 如何将数组/值作为光标返回到模板中?
我有一个helper函数,它返回一个数组,而不是传统的db.dbName.find()游标。如何编写Javascript 如何将数组/值作为光标返回到模板中?,javascript,arrays,meteor,return-value,return-type,Javascript,Arrays,Meteor,Return Value,Return Type,我有一个helper函数,它返回一个数组,而不是传统的db.dbName.find()游标。如何编写返回数组,使其反映为一个光标,类似于可在模板中使用的db.dbName.find()生成的光标 查找以下我的助手函数: var arrayTest = Meteor.call('getUserCategoryArray', function(error, results){ if(error){ console.log(error.reason); } el
返回数组
,使其反映为一个光标,类似于可在模板中使用的db.dbName.find()
生成的光标
查找以下我的助手函数:
var arrayTest = Meteor.call('getUserCategoryArray', function(error, results){
if(error){
console.log(error.reason);
} else {
var results1 = results.toString();
var results2 = results1.split(",");
alert("Array content: " +results2);
alert(results2[0]);
alert(results2[1]);
alert(results2[2]);
return results2;
}
})
解释部分代码:自上而下:警报成功打印:
Array content: shoes,clothes,watches
shoes
clothes
watches
此警报仅用于确认results2是一个工作数组。
现在,如何对返回值/数组进行编码,以便能够在模板中使用它,就像它是由db.dbName.find()查询返回的游标一样
非常感谢您的帮助。您的问题不在于阵列,而在于同步与异步编程。正如@mutdmour提到的,空格键可以很好地处理助手的数组
在呈现模板时,可以多次调用帮助程序,因此它不应该执行任何异步操作或产生任何副作用。您的助手正在进行异步调用,因此这是一个问题
您看到的问题是,这样的调用是异步的,而助手需要是同步的。因此,您将很难让助手按原样工作
在许多情况下,助手会返回集合的内容,或将光标返回集合的内容。我不知道你的应用程序,但发布/订阅收藏内容是更好的选择吗
如果不是,并且必须是方法调用的结果,那么通常我会:
在onCreated()中进行调用
将结果写入反应式var
从帮助器返回被动var
e、 g
您可以将数组传递给#每个把手。签出@mutdmour谢谢,但我无法理解如何将其应用到我的代码中。我在我的模板中尝试了这个:{{{each results2}}{{this}}{{/each}}
,它似乎不起作用。我还尝试了helper函数名:allCategorie,因此在模板中我尝试了{{{{each allCategories}}{{this}}{{/each}
。还是不行。谢谢你的帮助
Template.Foo.onCreated(function() {
let self = this;
self.clothing = new ReactiveVar();
Meteor.call('getUserCategoryArray', function(error, results) {
if (!error) {
// or whatever you need to do to get the results into an array
self.clothing.set(results);
}
});
});
Template.Foo.helpers({
clothing() {
return Template.instance().clothing.get();
}
});