meteor,如何从另一个助手获得助手?
我有一个帮手像
Template.user_profile.helpers({ user:function() { return Meteor.users.find({'profile.front_name':Session.get('slug')}).fetch()[0]; } });
我想添加一个助手到可以访问user
助手的集合,并将其_id
与当前用户_id
进行比较,以判断用户是否正在访问自己的configuration文件。 我正在使用一些非常丑陋的东西:
Template.user_profile._tmpl_data.helpers.user()
最终的代码:
Template.user_profile.helpers({ user:function() { return Meteor.users.find({'profile.front_name':Session.get('userId')}).fetch()[0]; }, isCurrentUser: function() { return Template.user_profile._tmpl_data.helpers.user()._id === Meteor.userId(); } });
有没有更好的方法来访问另一个助手?
我只是不小心在控制台中发现了这个:
Template.registerHelper function (name, func) { Blaze._globalHelpers[name] = func; }
所以, Blaze._globalHelpers
就是我们正在寻找的!
你可以调用一个模板助手(不是全局助手 – 这是在outluch的答案)与:
Template.tplName.__helpers.get('helper').call()
MDGbuild议使用常规函数,然后将其传递给助手,事件等。 看到这里 。
16.06.16更新
其实我强烈build议只使用manuel:viewmodel – 它可以减轻很多Blaze的头痛。
当我正在寻找一种方法来从另一个助手调用助手的时候,我发现Meteor 1.0定义了“Template.registeredHelpers”,可供所有其他助手使用。 https://docs.meteor.com/#/full/template_registerhelper
Template.registerHelper("checkedIf",function(value){ return value?"checked":""; });
也许这会为你工作:
//js Template.foo.helpers({ bar: function() { return this.userId == Meteor.userId(); }, domain: function() { var a = document.createElement('a'); a.href = this.url; return a.hostname; } }); ownsDocument = function(userId, doc) { return doc && doc.userId === userId;} Posts = new Meteor.Collection('posts'); Posts.allow({ update: ownsDocument, remove: ownsDocument }); //html {{#if bar}}<a href="{{pathFor 'postEdit'}}">Edit</a>{{/if}}