2012-06-18 16 views
9

मैं वेब ऐप के लिए या तो knockout.js या angular.js libs (बाध्यकारी समर्थन के बी/सी) का उपयोग करने जा रहा हूं।angular.js (या knockout.js) एकीकरण?

मेरा सवाल यह है कि - आपका अनुभव इन यूआई को मौजूदा यूआई libs जैसे डोजो, jQueryUI, Ext.js, YUI, को एकीकृत करता है .. E.g. यूआई libs में डाटाबेसिंग suport/वाक्यविन्यास का उपयोग कैसे है? क्या आपको विजेट फॉर्म UI lib का उपयोग करने के लिए कस्टम बाध्यकारी जैसी कुछ लागू करना है?

उत्तर

15

नॉकआउट स्थिति के लिए काफी अच्छा है। कोई भी custom bindings के माध्यम से तृतीय-पक्ष विजेट्स के साथ एकीकृत कर सकता है। बाइंडिंग एपीआई बहुत सरल और स्ट्रेट-फॉरवर्ड है।

ko.bindingHandlers.yourBindingName = { 
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
     // This will be called when the binding is first applied to an element 
     // Set up any initial state, event handlers, etc. here 
    }, 
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
     // This will be called once when the binding is first applied to an element, 
     // and again whenever the associated observable changes value. 
     // Update the DOM element based on the supplied values here. 
    } 
}; 

समय को लागू एकल update विधि से अधिकांश के लिए पर्याप्त है: आप सभी की जरूरत एक या दो तरीकों (नॉकआउट डॉक्स के हवाले से) लागू करने के लिए है। यहां तक ​​कि a collection of ready-made bindings for jQuery UI भी है। इसमें सभी jQuery यूआई विगेट्स शामिल नहीं हैं लेकिन कस्टम बाइंडिंग बनाने के बाद से आप इतनी सरल हैं कि आप अपनी खुद की बाइंडिंग को लागू कर सकते हैं जैसा कि आपको आवश्यकता है।

कोणीय जेएस स्थिति अधिक कठिन है। आप अपने Directive के हिस्से के रूप में एक कस्टम बाध्यकारी बना सकते हैं। निर्देश API के लिए आपको अधिक कोड लिखने की आवश्यकता है। निर्देशों का जीवन चक्र भी काफी जटिल है। तो, उन्हें सीखने में काफी समय लगेगा।

साथ ही यह आपको व्यवहार के कई अलग-अलग पहलुओं को निर्दिष्ट करने देता है। उदाहरण के लिए आप directive के माध्यम से विजेट के आंतरिक HTML प्रतिनिधित्व को पूरी तरह से फिर से लिख सकते हैं और अंदर कोणीय टेम्पलेट का उपयोग कर सकते हैं। नॉकआउट में आपको इसके लिए jQuery का उपयोग करने की आवश्यकता होगी। दुर्भाग्यवश, नॉकआउट निर्देशों में कस्टम बाइंडिंग के विपरीत अपने स्वयं के विगेट्स लिखने के लिए अधिक उपयुक्त हैं, न कि मौजूदा लोगों के साथ एकीकृत करने के लिए।

संक्षेप में:

  • नॉकआउट बाइंडिंग आसान होता है। तीसरे पक्ष के विगेट्स के साथ एकीकृत करना आसान है।
  • कोणीय निर्देश आपके स्वयं के विजेट लिखने के लिए अधिक उपयुक्त हैं लेकिन एक ही समय में अधिक शक्तिशाली हैं।
+0

यह भी ध्यान रखें कि कोणीय की साइट वर्तमान में एक प्रवाह में है इसलिए चर्चाओं से बहुत सारे लिंक टूटे हुए हैं। मैं वास्तव में आपको कोणीय एकीकरण बुद्धि jQuery, या Ext JS, या कुछ अन्य लाइब्रेरी के लिए एक और विशिष्ट उदाहरण देना पसंद करूंगा लेकिन मुझे कुछ भी नहीं मिला :( –

+1

कोणीय-उई नामक एंजुलरज़ का एक ऑफशूट समूह (जिसमें से मैं हूं सदस्य) कोणीय विजेट बनाने, jqueryui और ट्विटर बूटस्ट्रैप प्लगइन्स लपेटने की प्रक्रिया में है। यह शुरुआती चरणों में है और हमें एंजुलरजेज़ के नए जारी किए गए 1.0 में पुन: अपनाने की आवश्यकता है। यह सच है कि कोणीय निर्देशों का उपयोग करने के साथ और अधिक जटिलता है कोणीय की ताकतें सबसे बड़ी बाधा हैं, अधिकांश के लिए कोणीय को सूचित किया जा रहा है कि मॉडल बदल गया है ताकि यह दृश्य में प्रतिबिंबित हो सके। –

+0

@DanDoyon Angular-ui लाइब्रेरी उपयोगी है, निश्चित रूप से, लेकिन बहुत से क्षेत्रों में भी कमी है। ओपी के सवाल का जवाब देने के लिए, एक मौजूदा ऐप में कोणीय को एकीकृत करना संभव नहीं है। नॉकआउट एकीकृत करना है। कोणीय सब कुछ या कुछ भी नहीं है, नॉकआउट नहीं है। –

2

आमतौर पर आप बाहरी पुस्तकालयों के साथ काम करने के लिए कस्टम बाइंडिंग लागू करेंगे, लेकिन अक्सर खुले स्रोत प्रयासों के बहुत सारे होते हैं जो पहले ही काफी महत्वपूर्ण हैं।

https://github.com/SteveSanderson/knockout/wiki/Bindings

की जाँच करें अगर वहाँ किसी भी उपलब्ध नहीं हैं, अपने स्वयं के लागू करने में बहुत जटिल नहीं है:

http://knockoutjs.com/documentation/custom-bindings.html