javascript - attribute - title css
Meteor, ¿cómo acceder a un ayudante de otro ayudante? (5)
Acabo de descubrir esto accidentalmente en la consola:
Template.registerHelper
function (name, func) {
Blaze._globalHelpers[name] = func;
}
Por lo tanto, Blaze._globalHelpers
es lo que estamos buscando.
Tengo un ayudante como
Template.user_profile.helpers({
user:function() {
return Meteor.users.find({''profile.front_name'':Session.get(''slug'')}).fetch()[0];
}
});
Quiero agregar un ayudante a la colección que podría acceder al ayudante del user
y comparar su _id
con el _id
usuario actual, para decir si el usuario está visitando su propio perfil. Estoy usando algo bastante feo:
Template.user_profile._tmpl_data.helpers.user()
El código final:
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();
}
});
¿Hay alguna forma mejor de acceder a otro ayudante?
Es posible que ni siquiera necesites llamar a un ayudante como ese. Hay un actualAyuda de usuario ya integrada.
http://docs.meteor.com/#template_currentuser
{{currentUser}}
Mientras buscaba la manera de llamar a un ayudante de otro ayudante, descubrí que Meteor 1.0 define "Template.registeredHelpers" que están disponibles para el resto de los ayudantes. https://docs.meteor.com/#/full/template_registerhelper
Template.registerHelper("checkedIf",function(value){
return value?"checked":"";
});
Puede llamar a un asistente de plantilla (no a un ayudante global, que está en la respuesta de outluch) con:
Template.tplName.__helpers.get(''helper'').call()
MDG sugiere usar una función regular y luego pasarla a ayudantes, eventos, etc. Mira here .
Actualización 16.06.16
En realidad, recomiendo usar simplemente manuel:viewmodel - alivia tantos dolores de cabeza de Blaze ...
tal vez esto funcione para usted:
//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}}