2013-11-27 4 views
6

में कई अलग-अलग मार्गों के लिए लिंक 'सक्रिय' कैसे सेट करें, मैं एक से अधिक मार्गों के लिए एम्बर लिंक-हेल्पर पर 'सक्रिय' कक्षा सेट करना चाहता हूं, जहां मार्ग नेस्टेड नहीं हैं। यानी। अगर मेरे पास रूट 1 का लिंक है तो मैं वर्तमान रूट रूट 1 या रूट 2 होने पर सक्रिय होना चाहता हूं।एम्बरजेएस

कुछ है, जैसे:

{{#link-to 'route1' currentWhen="route1, route2"}}Things-N-Stuff{{/link-to}}

मेरा अगला आदर्श परिदृश्य सेट किया गया है (या लगता है) एक बूलियन जब मार्ग सक्रिय है और उसके बाद की तरह कुछ कार्य करें:

{{#link-to 'route1' class="isRoute1:active isRoute2:active"}}Not-as-good{{/link-to}} 

लेकिन मैं डी इसे मुफ्त में उठाओ। शायद एक डिफ़ॉल्ट isRoutename बूलियन है जो अभी तक दस्तावेज़ों में नहीं है ...?


अभी तक कोई जवाब नहीं है। App.ApplicaitonController

isThingsLinkActive: function(){ 
    return ['things.index','thing.index','stuff.index'].contains(this.get('currentPath')); 
}.property('currentPath'), 

में

{{#linkTo "things" tagName="li" href=false}} 
    <a {{bindAttr href="view.href"}} {{bindAttr class="isThingsLinkActive:active"}}>Things</a> 
{{/linkTo}} 

और फिर इसका मतलब है कि मैं एक 'अतिभारित' क्लिक के लिए मेरे एप्लिकेशन नियंत्रक में thins की तरह कुछ करने की जरूरत है: मैं यह कर समाप्त हो गया। क्या यह एम्बर द्वारा उत्पन्न डिफ़ॉल्ट झंडे/विशेषताओं का उपयोग करके टेम्पलेट में इसे पूरी तरह से कैप्चर करने के लिए क्लीनर नहीं होगा? मैं एक और अधिक सुरुचिपूर्ण समाधान के लिए खुला हूँ ... कोई भी?

+0

संभव डुप्लिकेट की [EmberJS सेट एकाधिक बार पर गुण] (http://stackoverflow.com/questions/8752805/emberjs-set-multiple-properties-at-once) –

+0

@PaulSweatte मुझे नहीं लगता कि ये बिल्कुल संबंधित हैं। इस सवाल को लिंक-टू हेल्पर के साथ करना है। दूसरा गुणों को सेट करने के बारे में है। यदि मैं गलत हूं और आप यह समझ सकते हैं कि लक्ष्य को पूरा करने के लिए सेटप्रॉपर्टीज का उपयोग कैसे किया जाए, तो मुझे इसे किसी jsfiddle या कुछ में देखना अच्छा लगेगा। – genkilabs

उत्तर

10

link-to#active documentation के अनुसार, आप इसे "वर्तमान" पर सीमित स्थान का उपयोग करके कर सकते हैं, लेकिन इसके लिए एम्बर 1.8 की आवश्यकता है।

{{#link-to 'route1' currentWhen="route1 route2"}}Things-N-Stuff{{/link-to}} 

यह भी एक सुविधा है जो आपको पहले पर सक्षम कर सकते हैं हो सकता है बनाता है:

देखें 'एंबर-रूटिंग-बहु वर्तमान-जब' https://github.com/emberjs/ember.js/blob/master/FEATURES.md

वैकल्पिक रूप से, आप कड़ी ओवरराइड कर सकते हैं इस अतः पोस्ट में वर्णित तरीकों में से एक के साथ सहायक की:

Is there a way to pass an array to currentWhen in EmberJS?

+0

इस साल के पुराने धागे का जवाब देने के लिए धन्यवाद। कभी-कभी इन सुविधाओं में कुछ समय लगता है, लेकिन मुझे यह देखकर खुशी हो रही है कि यह सोचा गया था और समर्थित होगा (होगा)। – genkilabs

+0

आह, वास्तव में तारीख को नोटिस नहीं किया था, लेकिन आज भी यह एक प्रासंगिक सवाल है और मुझे खुशी है कि आपने यह पूछा है;) अच्छा है कि इसे एम्बर लोगों द्वारा संबोधित किया गया है –

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