2015-12-08 3 views
0

Я относительно новичок в Meteor, и я пытаюсь создать веб-магазин для моей невестки, которая берет данные из своего существующего магазина Etsy и ставит пользовательский скин на Это. Я определил все свои Meteor.methods для извлечения данных, и я проверил данные с помощью ряда команд console.log ... Итак, данные есть, но они не будут отображаться на экране. Ниже приведен пример кода на стороне сервера:Метеор: данные внешнего вызова API не отображаются

Meteor.methods({ 

    ... 

    'getShopSections': function() { 
     this.unblock(); 
     var URL = baseURL + "/sections?api_key="+apiKey; 
     var response = Meteor.http.get(URL).data.results; 
     return response; 
    } 

    ... 

}); 

Этот метод возвращает массив объектов. Образец немного JSON строки одного из возвращаемых объектов из массива:

{ 
    active_listing_count: 20, 
    rank: 2, 
    shop_section_id: 1******0, 
    title: "Example Title", 
    user_id: 2******7 
} 

После извлечения этих данных без сучка, я был готов сделать вызов со стороны клиента, и я попробовал и потерпел неудачу в нескольких различные способы до поиска Google приземлились меня в этом учебнике здесь: https://dzone.com/articles/integrating-external-apis-your

на стороне клиента, у меня есть nav.js файл со следующим кусочке кода, адаптированный из приведенного выше урока:

И образец вызова из моего навигатора .html template ...

<ul> 
    {{#each category}} 
    <li>{{category.title}}</li> 
    {{/each}} 
</ul> 

Итак, здесь есть несколько вещей, о которых я не знаю. В первую очередь, DOM не передает ни одну из категорий category.title, несмотря на то, что отображается соответствующее число заполнителей li. Во-вторых, прежде чем я следовал вышеприведенному учебнику, я не определял переменную Session. Учитывая, что список категорий магазинов должен оставаться статическим после загрузки шаблона, я не думал, что это необходимо из того, что я понимаю о переменных сеанса ... но по какой-то причине это была разница между шаблоном, отображающим один пустой <li> tag по сравнению с количеством пустых <li>, равным категории.length --- поэтому, хотя я не могу понять, зачем нужна переменная Session в этом случае, это привнесло мне один воспринимаемый шаг ближе к моей цели ... Я попробовал несколько операторов console.log на стороне клиента, и я на 100% уверен, что данные определены и доступны, но когда я проверяю исходный код в окне «Инструменты для разработчиков», DOM просто показывает количество пустых li кронштейны.

Может ли кто-нибудь из метеоритных гуру объяснить, почему 1) DOM не передает ни одного из названий, и 2) если действительно нужна переменная сеанса? Пожалуйста, дайте мне знать, нужна ли дополнительная информация, и я буду очень рад предоставить ее. Благодаря!

ответ

0

Вы можете установить контекст данных при использовании #each, так просто использовать:

<li>{{title}}</li> 

Если сессия является правильный тип реактивной переменной для использования здесь или нет, трудно определить, не зная, что вы но моя грубая догадка заключается в том, что коллекция Mini Mongo может быть лучше подходит для того, что, по-вашему, вы делаете.

Чтобы начать работу над выбором правильного типа реактивной переменной, используемой для этой головы, на full Meteor documentation и исследовать: коллекции, сеансы и реактивные вары.

Редактировать: Чтобы отступить и немного прояснить, вспомогательный элемент шаблона называется реактивным вычислением. Реактивные вычисления внутри помощников выполняются только в том случае, если они используются в их соответствующих шаблонах И если вы используете реактивную переменную внутри вычисления. Существует несколько типов реактивной переменной, каждая из которых имеет свои собственные атрибуты. Вероятно, ваш код вообще не работал, прежде чем вы использовали сеанс, потому что вы не использовали реактивную переменную.

+0

Большое спасибо - список теперь правильно отображается! Теперь изучите реактивные вары. – neonbrown82