2012-07-11 5 views
17

मेरे पास एक बहुत ही सरल निर्देश है कि मैं टेम्पलेट को एक अलग HTML फ़ाइल से लोड करना चाहता हूं। मैं चाहता हूं कि एचटीएमएल निर्देश को प्रतिस्थापित करे और इसलिए मैं replace: true संपत्ति को निर्देश में जोड़ूं। हालांकि जब मैं ऐसा करता हूं, तो टेम्पलेट बिल्कुल शामिल नहीं होता है।कोणीयजेएस - क्यों नहीं बदले: टेम्पलेट यूआरएल संपत्ति के साथ सही काम?

मैंने jsFiddle बनाया है जहां आप इसे देख सकते हैं। यदि आप डीओएम का निरीक्षण करने के लिए फायरबग या कुछ का उपयोग करते हैं, तो आप देख सकते हैं कि जब यह केवल template प्रॉपर्टी का उपयोग कर रहा है तो यह तत्व को प्रतिस्थापित करता है। यदि आप replace: true लेते हैं तो आप foo तत्व में संलग्न होने वाले templateUrl पर HTML देख सकते हैं। हालांकि, जैसे ही मैं के साथ replace: true जोड़ता हूं, तो मुझे लगता है कि DOM में <foo></foo> है।

क्या कोई कारण है कि आप इन दोनों गुणों का एक साथ उपयोग नहीं कर सकते हैं? मैं जावास्क्रिप्ट के साथ एक विशेषज्ञ से बहुत दूर हूं, इसलिए यहां क्या हो रहा है इसके बारे में कोई जानकारी बहुत सराहना की जाएगी।

+0

देखें [यहां] (https://github.com/angular/angular.js/issues/1459) यदि आप टेबल –

उत्तर

34

सुनिश्चित करें कि templateUrl में आपके एचटीएमएल की सामग्री बिल्कुल एक मूल तत्व है। यह एक मुद्दा जब replace: false नहीं है, लेकिन एक मुद्दा बन जाता है जब replace: true और आप (Firebug के साथ) इस कंसोल त्रुटि देखेंगे: (दो जड़ तत्वों के साथ)

Error: Template must have exactly one root element. 

यहाँ यह not working के jsFiddle है और यह working के साथ एक और ।

+8

मेरी एचटीएमएल फाइल में मेरे रूट स्तर तत्व के बाहर कुछ टिप्पणियां थीं। मुझे लगा कि टिप्पणियां ठीक थीं, लेकिन जब मैंने सभी बाहरी टिप्पणियों को हटा दिया और केवल एक बाहरी div था, तो यह ठीक काम करता था। धन्यवाद! – dnc253

+3

कोई भी टेबल पंक्ति टैग का उपयोग करने के साथ कोई भाग्य था? यदि आप tr td के साथ काम करने वाले उदाहरण को प्रतिस्थापित करते हैं तो यह काम करना बंद कर देता है ... – toxaq

+0

@toxaq तालिका पंक्ति टैग के लिए मैंने 'ई' प्रकार निर्देश को 'ए' प्रकार के निर्देश पर स्विच किया। – JisuKim82

1

अच्छा सवाल। अगर मैं गलत नहीं हूँ, आप "transclude" का उपयोग करना चाहते

http://jsfiddle.net/dandoyon/AsVp8/1/

Transclude आप क्या HTML में है के साथ अपने टेम्पलेट मिश्रण करने के लिए अनुमति देता है। आप डॉक्टर को एक और नज़र देना चाहते हैं और इस विकल्प को देखना चाहते हैं।

चीयर्स!

+0

के साथ काम कर रहे हैं, यदि मुझे गलत नहीं लगता है, तो बस आपको स्थानांतरित करने की अनुमति नहीं देता है अंत परिणाम में टैग की सामग्री? यह वही नहीं है जो मैं चाहता हूं। मैं सिर्फ अपने टैग को पूरी तरह से टेम्पलेट में बदलकर चाहता हूं। मेरे जेएसफ़िल्ड में ब्ला ब्ला भाग सिर्फ यह सुनिश्चित करने के लिए था कि टैग का वह हिस्सा अंतिम परिणाम में चला गया था। – dnc253

+0

ठीक है। खैर http://jsfiddle.net/dandoyon/AsVp8/2/ (जो मुझे लगता है कि आपके पास पहले था) काम करता है और वहां क्या बदलता है। क्या मैं कुछ भूल रहा हूँ? आप किस ब्राउज़र का उपयोग कर रहे हैं? आईई के लिए आईई के लिए होने वाली जरूरतों को बदलने के लिए आईई को विशेष विचारों की आवश्यकता है। अगर मुझे यह मुद्दा है तो मुझे बताएं। मैंने कोणीय-ui के लिए हमारे निर्देशों को ऑटोशिव करने के लिए कुछ लिखा था। https://github.com/angular-ui/angular-ui/blob/master/common/ieshiv/src/ieshiv.js –

+0

समस्या के साथ समस्या टेम्पलेट यूआरएल संपत्ति के साथ था। मेरे पास jsFiddle को मेरी स्थानीय HTML फ़ाइल हिट करने का कोई तरीका नहीं है, इसलिए मैंने कुछ यूआरएल डाला जो इसे मारा जा सकता है। ग्लूपी द्वारा दी गई जानकारी के साथ मैं यह समझने में सक्षम था कि यह मेरी रूट स्तर div के बाहर की टिप्पणियां थी जो समस्या पैदा कर रही थीं। – dnc253

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