2012-11-19 15 views
5

प्राप्त करने के लिए requjs और अंडरस्कोर के साथ knockout मैं knockout, आवश्यकता, underscore का उपयोग कर एक छोटा सा अनुप्रयोग बनाने की कोशिश कर रहा हूँ।बाहरी templating

मैं अपने सूचकांक पृष्ठ जहाँ मैं में फोन की आवश्यकता है और यह बताते हैं करने के लिए एक main.js मैं अपने config

require.config({ 

paths: { 
    jquery:  'vendor/jqm/jquery_1.7_min', 
    knockout: 'vendor/knockout/knockout-2.2.0', 
    underscore : 'vendor/underscore/underscore_amd', 
    text:  'vendor/require/text', 
    templates: '../templates' 
} 

}); 

define(['app'], function(app) { 

}); 

मेरी सूचकांक के बाकी कोई शरीर है रखने के थे। इसलिए जब यह भरा हुआ है यह app.js

define(['jquery','knockout', 'appViewModel'], 
function($, ko, appViewModel) 
{ 
    ko.applyBindings(new appViewModel()); 
}); 

कॉल यह तो appViewModel जो ठीक काम करता है फोन करना चाहिए। यह वह जगह है जहां मैं उलझन में थोड़ा के रूप में मैं तो appViewModel

से एक टेम्पलेट में लोड करने के लिए चाहते

तो मैं इस

define(['jquery','knockout', 'text!templates/homeViewTemplate.html', 'jqm'], 
function($, ko, homeViewTemplate) { 

     //call and load in template 

}); 

यही मेरी सही जगह मिल की तरह कुछ करने के लिए कोशिश कर रहा हूँ थोड़ा अटक मैं में पता रीढ़ की हड्डी उदाहरण के लिए मैं इस्तेमाल कर सकते हैं

template:_.template(homeViewTemplate) 

लेकिन मैं सच में यकीन नहीं है मैं https://github.com/ifandelse/Knockout.js-External-Template-Engine लेकिन इस पर ध्यान दिया है यहाँ

में टेम्पलेट लोड हो रहा है का सबसे अच्छा तरीका आवश्यकता के साथ बहुत अच्छी तरह से काम नहीं करता है और यदि आप बिना किसी आवश्यकता के इसका उपयोग करते हैं और बस कुछ एचटीएमएल फाइल में डालते हैं और कॉल करते हैं कि जब मैं jQuery मोबाइल का उपयोग करता हूं तो यह कक्षाएं आदि नहीं जोड़ता है

मुझे आश्चर्य हुआ कि कोई मुझे इंगित कर सकता है सही दिशा .. मैं मैं वास्तव में बाहर काम करने के क्या कोड यहाँ

define(['jquery','knockout', 'text!templates/homeViewTemplate.html', 'jqm'], 
function($, ko, homeViewTemplate) { 

     //call and load in template 

}); 

में डालने के लिए homeviewtemplate में कॉल करने के लिए कोशिश कर रहा हूँ लगता है।

धन्यवाद

उत्तर

2

मैं jQuery का उपयोग पेज में टेम्पलेट HTML डालने के लिए और फिर मेरी नॉकआउट बाइंडिंग लागू होते हैं।

$('#selector').append(homeViewTemplate); 
ko.applyBindings(VIEWMODEL, $('#selector')[0]); 

आप मेरे डब्ल्यूआईपी आलेख में advanced knockout binding के बारे में भी रुचि रखते हैं।

+0

बहुत ही रोचक लेख। यह बहुत अच्छा होगा अगर आप इस बारे में जिथब पर कोड उदाहरण डाल सकते हैं। – Dan

+0

मैं इसे jQueryMobile के साथ भी उपयोग करने की कोशिश कर रहा हूं - इसलिए मुझे लगता है कि जब कोई लिंक बदल जाता है तो मुझे एक ईवेंट को आग लगाना होगा .. रीढ़ की हड्डी में मैं रूटिंग बंद कर दूंगा और फिर रीढ़ की हड्डी राउटर का उपयोग करूंगा .. क्या आप ऐसा करने की सलाह देंगे यहां एक समान बात है क्योंकि मुझे यह जानने की आवश्यकता होगी कि किसी अन्य पेज टेम्पलेट में लोड कब किया जाए .. – Dan

+0

हाँ। यह शायद सबसे अच्छी योजना है। नॉकआउटजेएस राउटर के साथ नहीं आता है, लेकिन तीसरे भाग को लागू करना मुश्किल नहीं है। मुझे jQuery मोबाइल के साथ ज्यादा अनुभव नहीं है, लेकिन इसे काम करना चाहिए। –

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