2013-06-21 6 views
47

मैं की तरहउल्का, किसी अन्य सहायक से एक सहायक के लिए कैसे पहुंचे?

Template.user_profile.helpers({ 
    user:function() { 
    return Meteor.users.find({'profile.front_name':Session.get('slug')}).fetch()[0]; 
    } 
}); 

एक सहायक मैं संग्रह जो वर्तमान उपयोगकर्ता _id साथ user सहायक पहुंच पा रहे थे और तुलना करें अपनी _id करने के लिए एक सहायक को जोड़ने के लिए, बता उपयोगकर्ता अपने स्वयं के प्रोफ़ाइल पर जाकर है कि क्या करना चाहते हैं। मैं कुछ बहुत बदसूरत उपयोग कर रहा हूँ:

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(); 
    } 
}); 

एक और सहायक का उपयोग करने के लिए किसी भी बेहतर तरीका है?

उत्तर

2

आपको इस तरह एक सहायक को कॉल करने की भी आवश्यकता नहीं हो सकती है। वहाँ एक currentUser पहले से ही में बनाया सहायक है

http://docs.meteor.com/#template_currentuser

{{currentUser}} 
+0

मैं प्रोफ़ाइल उपयोगकर्ता का दौरा कर रहा है अपनी ही है कि क्या जांच करने के लिए चाहते हैं। –

+0

जो प्रश्न नहीं थे ... – SsouLlesS

0

शायद यह आपके लिए काम करेगा:।

//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}} 
+0

(यह जांचने के लिए कि क्या उपयोगकर्ता अपना स्वयं का -> पहला भाग और एचटीएमएल) देखता है, और फिर यदि आप संपादन की अनुमति देंगे, तो दूसरा भाग – GeriTol

4

जैसा कि मैंने एक तरह से खोज रहा था एक और सहायक से एक सहायक कॉल करने के लिए, मैंने पाया कि उल्का 1.0 "टेम्पलेट.registeredHelpers" परिभाषित करता है जो अन्य सभी सहायकों के उपयोग के लिए उपलब्ध हैं। https://docs.meteor.com/#/full/template_registerhelper

Template.registerHelper("checkedIf",function(value){ 
    return value?"checked":""; 
}); 
+0

मैंने टेम्पलेट.registerHelper को एक अलग सहायक में उपयोग करने का प्रयास किया .js फ़ाइल ऐसे सभी सहायकों को पकड़ती है, लेकिन जब मैं इसे किसी अन्य टेम्पलेट ईवेंट में आमंत्रित करने का प्रयास करता हूं तो इससे मदद नहीं मिलती है। तो सवाल यह है कि ऐसे सहायकों को घटनाओं में शामिल किया जा सकता है? ' Template.registerHelper (" checkIf ", फ़ंक्शन (मान) { वापसी मान?" चेक किया गया ":" "; }); Template.myform.events ({ "सबमिट करें .js-save-element: फ़ंक्शन (ईवेंट) { कंसोल।लॉग ('सहायक का आह्वान:' + चेकइफ ('teststring')); } }); ' यहां मुझे त्रुटि मिलती है 'संदर्भ त्रुटि: चेक किया गया है अगर परिभाषित नहीं किया गया है। – Jay

+0

अरे, मुझे लगता है कि यहां एक सहायक क्या है पर भ्रम है। एक सहायक एक फोकक्शन है जिसे टेम्पलेट से कहा जाता है (यानी, ब्लेज़ का उपयोग करते समय .html फ़ाइल)। आप एक ईवेंट से मददगार (जो आपके टेम्पलेट में जानकारी फ़ीड करता है) तक नहीं पहुंच सकते हैं (उस प्रक्रिया की जानकारी टेम्पलेट से बाहर आ रही है)। Blaze._globalHelpers ['checkIf']() को कॉल करने के लिए एक हैकी तरीका हो सकता है लेकिन यह एक 'अनियंत्रित'/आंतरिक सुविधा है, इसलिए इसे भविष्य में रिलीज में समर्थित नहीं किया जा सकता है। अपनी विधि को परिभाषित करने के बारे में क्या टेम्पलेट सिस्टम (ग्लोबल या फाइल-स्कोप्ड) और बस इसे उन दोनों स्थानों से कॉल करें जिन्हें आपको चाहिए? –

+0

असल में मैंने केवल पुराने स्कूल के रास्ते की तरह कुछ कर दिया। मेरे utils.js में मैंने अभी एक वैश्विक स्कोप्ड फ़ंक्शन परिभाषित किया है और फिर मैं इसे दोनों - सहायक और घटनाओं में आमंत्रित कर सकता हूं। मैं कैसे सोचता हूं कि यह कैसे करना है? (यदि कोई हो)। वैसे भी आपकी व्याख्या के लिए धन्यवाद। – Jay

32

मैं सिर्फ गलती से कंसोल में इस खोज की है:

Template.registerHelper 
function (name, func) {                    
    Blaze._globalHelpers[name] = func;                     
} 

तो, Blaze._globalHelpers हम के लिए क्या देख रहे है!

Template.tplName.__helpers.get('helper').call() 

एमडीजी एक नियमित रूप से समारोह का उपयोग कर पता चलता है और फिर सहायकों, घटनाओं और इतने पर करने के लिए इसे पारित: के साथ -

+1

शानदार! इच्छा है कि मैं इसे और अधिक उठा सकता हूं – foobarbecue

+0

अंततः सभी Google परिणामों के बीच एक वास्तविक जवाब मिला। धन्यवाद! –

10

आप एक टेम्पलेट सहायक (जो outluch के जवाब में है वैश्विक नहीं सहायक) कह सकते हैं। here देखें।

अद्यतन 16.06.16
असल में मैं दृढ़ता से बस manuel:viewmodel के उपयोग की सलाह - यह इतने सारे ब्लेज़ सिर दर्द दूर ...

संबंधित मुद्दे

 संबंधित मुद्दे