meteor - Meteor 如何将一个模板助手调用到另一个助手中?
问题描述
我如何将一个模板助手访问到另一个。我有 2 个模板
- 右侧边栏路径是
app\client\templates\shared\sidebar
- my_trb 路径是
app\client\templates\pages\my_trb
在my_trb
页面上,我显示了我帐户中所有添加的成员的列表,以及我需要在侧边栏助手中调用的相同内容。那么有没有办法将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');
}
});
解决方案
对于需要由多个模板访问的公共/共享代码,使用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
并从侧边栏调用它。
推荐阅读
- python - 在 pyspark 数据框中获取移动均值
- java - 如果 DRL 文件中的规则超过 10 个,则 Drools 部署失败
- php - 从同一个 WordPress 数据库中的表中获取所有相关数据
- javascript - 使用 Vue.js 在测试中查找数据属性
- command-line - (MiniZinc) 无法识别的选项 `--solver'
- java - 使用 Jackson 将包含模式和数据的 XML 转换为 java 对象
- python - Python中的可编辑组合框
- c++ - Objective-C++ 不能在枚举块中使用向量 push_back
- youtrack - 如何使用 YouTrack Markdown 语法隐藏文本块?
- mongodb - 获取此错误以启动 mongo db:无法设置侦听器:SocketException:地址已在使用中