我对 Meteor 比较陌生,我正在尝试为我的嫂子创建一个网络商店,从她现有的 Etsy 商店中获取数据并在上面放置一个自定义皮肤。我已经定义了我所有的 Meteor.methods 来检索数据,并且我已经用一系列 console.log 语句对数据进行了校对......所以,数据就在那里,但它不会呈现在屏幕上。以下是服务器端的一些代码示例:
Meteor.methods({
...
'getShopSections': function() {
this.unblock();
var URL = baseURL + "/sections?api_key="+apiKey;
var response = Meteor.http.get(URL).data.results;
return response;
}
...
});
此方法返回一个 Object 数组。来自数组中返回的对象之一的 JSON 字符串示例:
{
active_listing_count: 20,
rank: 2,
shop_section_id: 1******0,
title: "Example Title",
user_id: 2******7
}
在顺利获取这些数据后,我准备从客户端拨打电话,我尝试了几种不同的方式,但在谷歌搜索让我进入本教程之前失败了:https ://dzone.com/articles/集成-外部-API-您的
在客户端,我有一个 nav.js 文件,其中包含以下代码,改编自上述教程:
Template.nav.rendered = function() {
Meteor.call('getShopSections', function(err, res) {
Session.set('sections', res);
return res;
});
};
Template.nav.helpers({
category: function() {
var sections = Session.get('sections');
return sections;
}
});
以及来自我的 nav.html 模板内部的示例调用...
<ul>
{{#each category}}
<li>{{category.title}}</li>
{{/each}}
</ul>
所以,这里发生了一些我不确定的事情。首先,尽管显示了适当数量的li
占位符,但 DOM 并未呈现任何 category.title 字符串。其次,在我按照上面的教程之前,我没有定义一个 Session 变量。考虑到加载模板后商店类别列表应该保持静态,根据我对 Session 变量的理解,我认为没有必要……但由于某种原因,这是显示单个空<li>
标签的模板之间的区别与一些空的<li>
' 等于 category.length --- 所以,即使我无法理解为什么在这种情况下需要 Session 变量,它确实让我认为离我的目标更近了一步......我已经尝试了一些控制台.log 语句在客户端,我 100% 确定数据已定义且可用,但是当我在开发人员工具窗口中检查源代码时,DOM 只显示一些空li
括号。
任何 Meteor 大师都可以解释为什么 1)DOM 没有呈现任何标题,以及 2)如果 Session 变量确实有必要?如果需要更多信息,请告诉我,我很乐意提供。谢谢!