Помощники шаблонов в пакете Telescope при использовании Telescope.modules.add

Мне удалось вставить этот шаблон под названием lightBox с помощью Telescope.modules.add. Кажется, что структура файла работает нормально, за исключением того, что я не могу сделать помощник шаблона для взаимодействия с шаблоном, который вставлен с использованием функции Telescope.modules.add. Следующий код создает ошибку на стороне клиента "Uncaught TypeError: Невозможно прочитать свойство 'helpers' of undefined". Без этого вспомогательного метода шаблон видим и существует в представлении браузера.

lightBox.js

if (Meteor.isClient) {
  Telescope.modules.add("top", {
    template: "lightBox",
    order: 0
  });

  Template.layout.events({
    'click .post-content': function (e) {
      Session.set('lightBoxPageViewCounter', 1 );
    }
  });

  Template.lightBox.helpers({
    lightBoxOn: function() {
      return true;
    }
  });
}

Package.js

Package.describe({
  name: "admithub:admithub-lightbox",
  summary: "popup lightbox for admit hub forum to college email leads",
  version: "0.0.1"
});

Package.onUse(function(api) {
  api.use([
    'accounts-base',
    'stylus',
    'telescope:core@0.24.0',
    'aldeed:simple-schema',
    'aldeed:collection2',
    'aldeed:autoform'
  ]);

  api.addFiles('lib/client/lightBox.js', 'client');
  api.addFiles('lib/client/lightbox.html', 'client');
  api.addFiles('lib/client/lightbox.styl', 'client');
});

Шаблон называется lightBox и существует в том же пакете в том же каталоге. Я работал над этим, используя глобальные вспомогательные методы, но это неэффективное решение.

1 ответ

Решение

Ваш порядок загрузки пакетов неправильный, вы должны загрузить объявление шаблона (html) до объявления помощников шаблона (js), вам просто нужно поменять местами api.addFiles звонки.

api.addFiles('lib/client/lightbox.html', 'client');
api.addFiles('lib/client/lightBox.js', 'client');
Другие вопросы по тегам