我如何将一个模板帮助器访问另一个。我有2个模板
app\client\templates\shared\sidebar
app\client\templates\pages\my_trb
在my_trb
页面上,我显示了我帐户中所有添加的memebr的列表,我需要在侧边栏助手中调用相同的内容。那么有没有办法将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');
}
});
答案 0 :(得分:2)
对于需要由多个模板访问的通用/共享代码,使用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
和侧边栏中调用它。