2012-09-21 31 views
8

मैं अपने इनबिल्ट टेम्पलेटिंग सिस्टम के साथ knockout.js का उपयोग कर रहा हूं। मैं इतनी के रूप में टेम्पलेट्स परिभाषित:knockout.js रनटाइम पर टेम्पलेट लोड करना

<script type="text/html" id="subjectItemView"> 
    <span class="name" data-bind="text: subjectName" /> 
</script> 

मैं तो टेम्पलेट का उपयोग करती हैं इसलिए आईडी स्क्रिप्ट के हिस्से के रूप में इस होने एक आवश्यकता है।

मेरे पास मेरे एकल पृष्ठ एप्लिकेशन में इन टेम्पलेट्स में से कुछ उचित हैं और हाल ही में आवश्यकतानुसार आवश्यक स्क्रिप्ट लोड करने के लिए require.js का उपयोग करने के लिए स्थानांतरित हो गए हैं। मैं टेम्पलेट्स के साथ ऐसा करना चाहता हूं, अधिमानतः requ.js का उपयोग करना ताकि मेरे मॉड्यूल टेम्पलेट्स को निर्भरताओं के रूप में सूचीबद्ध कर सकें।

मैं यह कैसे कर सकता हूं?

उत्तर

10

मैं require.js टेक्स्ट प्लगइन का उपयोग करता हूं: http://requirejs.org/docs/api.html#text। एक बार आपके पास टेम्पलेट टेक्स्ट हो जाने के बाद, आप उसे पृष्ठ पर एक नए स्क्रिप्ट टैग में जोड़ सकते हैं (एक प्रकार के साथ text/html या जावास्क्रिप्ट के अलावा कुछ और)।

मैं वास्तव में एक संशोधित टेम्पलेट इंजन का उपयोग कर रहा हूं जो स्ट्रिंग को सीधे संभालता है, ताकि मुझे पृष्ठ पर अतिरिक्त स्क्रिप्ट टैग जोड़ने की आवश्यकता न हो।

this.activate = function() { 
     //load view model from the server 
     if (!this.loaded) { 
      require(["modules/" + name, "text!../templates/" + self.template + ".html"], function(Module, template) { 
       ko.templates[self.template] = template; 
       self.data(typeof Module === "function" ? new Module() : Module); 
       self.loaded = true; 
      }); 
     } 
    }; 

stringTemplateEngine है कि मैं कैसी लगती है का उपयोग करें:: https://github.com/rniemeyer/SamplePresentation/blob/master/js/stringTemplateEngine.js

+1

धन्यवाद रयान, कि अच्छी तरह से काम करता है

मेरे कोड की तरह कुछ लग रहा है। वह स्ट्रिंगटेम्प्लेटइंजिन बहुत बढ़िया है! मैंने एक मॉड्यूल की आवश्यकता में प्रक्रिया को लपेट लिया है, इसलिए मेरे पास हर जगह उसी बॉयलरप्लेट कोड नहीं है। https://github.com/aranm/ko.loadTemplateUsingRequireText। –

+0

क्या इस दृष्टिकोण का उपयोग koExternalTemplateEngine (https://github.com/ifandelse/Knockout.js-External- टेम्पलेट-इंजिन) के संयोजन के साथ किया जा सकता है? या क्या एकाधिक कस्टम टेम्पलेट स्रोत होना संभव नहीं है? – daedalus28

+0

क्या आप स्पष्ट कर सकते हैं कि आप अंतिम परिणाम क्या चाहते हैं? क्या आप बाहरी टेम्पलेट इंजन को टेम्पलेट को पुनर्प्राप्त करने के लिए संभालना चाहते हैं, लेकिन फिर इसे स्क्रिप्ट के रूप में शामिल न करें? –

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

  • कोई संबंधित समस्या नहीं^_^