Метеор Как вызвать один помощник шаблона в другой помощник? - PullRequest
0 голосов
/ 03 ноября 2018

Как я могу получить доступ к одному помощнику шаблона в другой. У меня есть 2 шаблона

  1. Путь к правой боковой панели

app\client\templates\shared\sidebar

  1. my_trb path is

app\client\templates\pages\my_trb

на my_trb странице я показываю список всех добавленных memebrs в моей учетной записи и то же самое, что мне нужно вызвать в помощнике боковой панели. Так есть ли способ вызвать my_trb шаблон помощника в боковой панели? Это помощник в my_trb

Template.MyTribes.helpers({

  'myTrb' () {
    let tribIOwn = Meteor.user().trb_i_own; 
    let trb = [];
    tribIOwn.forEach(function (t) {
      trb.push(Trb.findOne({_id: t}));
    });
    return trb;
  },

});

Это полный код tribes_controller.js

TrbController = RouteController.extend({

  subscriptions: function() {
    this.subscribe('users').wait();
    this.subscribe('trb', this.params._id).wait();
  },

  waitOn: function () {
    this.subscribe('trb',Meteor.userId());
    this.subscribe('tribeArgs', this.params._id);
  },


  data: function () {
    return Trb.findOne({_id: this.params._id});
  },

  // You can provide any of the hook options

  onRun: function () {
    this.next();
  },
  onRerun: function () {
    this.next();
  },

  //onBeforeAction: function () {
  //  this.next();
  //},
  onBeforeAction: function () {
    if (!Meteor.userId()) {
      this.render('Splash');
    } else {
      if (!Meteor.user().username) {
        this.render('AddUsername');
      } else {
        this.next();
      }
    }
  },


  action: function () {
    this.render();
  },
  onAfterAction: function () {
  },
  onStop: function () {
  },
  editTribe: function () {
    this.render('EditTribe');
  }
});

1 Ответ

0 голосов
/ 04 ноября 2018

Для общего / общего кода, к которому должен обращаться более одного шаблона, имеет смысл определить глобального помощника, используя Template.registerHelper .

Для вашего помощника это будет выглядеть так:

app\client\templates\shared\helpers

// import { Trb } from ....

Template.registerHelpers('myTrb', function myTrb () {
  const user = Meteor.user();
  if (! user) return [];
  const tribIOwn = user.trb_i_own; 
  const trb = [];
  tribIOwn.forEach(function (t) {
    trb.push(Trb.findOne({_id: t}));
  });
  return trb
})

(Обратите внимание, что я немного изменился, поскольку Meteor.user().trb_i_own зависнет, если не будет зарегистрированного пользователя.)

Теперь вы можете удалить помощника из шаблона my_trb и вызвать его из my_trb и боковой панели.

...