我有一个异步方法,可以执行 Facebook 请求以从当前登录的用户检索照片。
我有一个模板,可以在其中循环这些结果。但由于对 Facebook 的调用是异步的,因此失败。
<template name="mytemplate">
{{#if photos}}
{{> images pics=photos}}
{{/if}}
</template>
<template name="images">
{{#with pics}}
{{#each this}}
{{images}}
{{/each}}
{{/with}}
</template>
这是我的 JavaScript:
Template.mytemplate.helpers({
photos: function () {
return Template.instance().myAsyncValue.get();
}
});
Template.mytemplate.created = function (){
var self = this;
self.myAsyncValue = new ReactiveVar("Waiting for response from server...");
Meteor.call('getPhotos', function (err, data) {
if (err)
console.log(err);
else
self.myAsyncValue.set(data.data);
});
}
我已经有一个正在监视的变量,但问题是我的模板已经创建,结果还不是数组。
有人可以向我展示如何在模板中使用异步数组结果的最佳实践吗?我想在模板中创建图像标签,而不是使用 jquery 或 javascript。
谢谢
最佳答案
如果我理解正确,那么在加载帮助程序时您会收到错误,因为照片不是数组。试试这个:
Template.mytemplate.helpers({
photos: function () {
var val = Template.instance().myAsyncValue.get();
return val.constructor === Array && val;
}
作为一个附带问题,为什么要对数组使用 ReactiveVar?我只发现在基元上使用它们的用途,因为 react 性不会进行深度扫描,但也许我错过了:)
关于javascript - Meteor:如何循环遍历作为异步方法结果的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970570/