मैं नॉकआउटजेएस के साथ खेल रहा हूं और बिल्कुल प्यार करता हूं कि चीजों को दरारों से गिरने से सामान को हर कोण से कितना सरल बनाता है। मेरा सवाल है कि डेटा को सर्वर पर वापस सहेजने के लिए अनुशंसित "सर्वोत्तम अभ्यास" क्या है? मेरी समझ यह है कि एक कनेक्टेड एमवीवीएम में, पहला "एम" डेटा लेयर है और इसलिए व्यूमोडेल ट्रिगर में निर्भरता ट्रैकिंग और नोटिफिकेशन सीधे डेटा परत पर सहेजता है। एक जावास्क्रिप्ट ऐप में, हम डिस्कनेक्ट हो जाते हैं और चुनिंदा रूप से AJAX का उपयोग कर सर्वर पर सहेजते हैं।एमवीवीएम/नॉकआउटज वेब ऐप में बदलावों को सहेजने का सबसे अच्छा तरीका?
जिस ऐप का मैं वर्तमान में इसका उपयोग कर रहा हूं वह एमवीसी 3 है और मुझे पूरी तरह से मेरे नियंत्रक पर "सेव" एक्शन लिखना है, मेरे पेज पर कहीं भी "सेव" बटन प्लॉप करें, पूरे व्यू मॉडेल को उस पर सहेजें कार्रवाई करें और उसके बाद डेटाबेस को जारी रखें। लेकिन जब आप त्वरित संपादन करते हैं और फिर इसे फिर से सहेजते हैं तो क्या होता है? या क्या होगा यदि एक सेव बटन डिज़ाइन के प्रवाह में फिट न हो? इसके बजाए, जब भी कोई बचत बटन नहीं होता है, तो आप हर बार कार्रवाई में बदलाव करना चाहते हैं? जिन विचारों के बारे में मैंने बाउंस किया है वे हैं:
- हर बार कोई भी बदलाव किए जाने पर संपूर्ण व्यूमोडेल पोस्ट करें और कार्रवाई को समझें कि नया क्या है और क्या नहीं है (आदर्श नहीं, विशेष रूप से बड़े मॉडल के लिए, यदि कुछ भी नहीं अन्यथा क्योंकि प्रत्येक बचत पर प्रेषित डेटा अनावश्यक रूप से बड़ा होगा)।
- व्यूमोडेल में प्रत्येक आइटम में एक संपत्ति जोड़ें जो ट्रैक करता है कि यह आखिरी सहेजने के बाद नया है और/या बदला गया है। फिर, उन वस्तुओं को grep करें और केवल सर्वर पर पोस्ट करें (मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे लगता है कि यह एक रेल ऐप के लिए _destroy संपत्ति का उपयोग करके किया जा सकता है)।
- उतने छोटे व्यू मॉडेल में अलग-अलग के रूप में अलग करें ताकि पहले दो विकल्पों में से कोई भी दर्द कम हो (यह संभवतः बिना किसी पर किया जाना चाहिए)।
- कुछ अन्य बेहतर तरीका?
मुझे आशा है कि वहां कुछ अच्छे विचार हैं जिनके बारे में मैंने सोचा नहीं है। घोषणात्मक रूप से सब कुछ बांधने में सक्षम होने के लिए और अभी भी को कुशलतापूर्वक बचाएं।
आप MVC conflating कर रहे हैं और MVVM (ASP.NET MVC के रूप में)। वे अनिवार्य रूप से एक ही पैटर्न हैं, लेकिन एमवीवीएम में WPF अनुप्रयोगों के खिलाफ डिजाइन करने के लिए विशिष्ट परिवर्तन हैं। – Will
असल में नॉकआउटजेएस (http://knockoutjs.com) एमवीवीएम पैटर्न का उपयोग करता है, जो पोस्टर भी रेफर कर रहा था। –
बहुत बढ़िया सवाल!नॉकआउट के बिना एक ही सवाल शायद और भी उपयोगी होगा, क्योंकि यह बहुत से लोगों में से एक है, वहां कई जेएस ढांचे हैं। मैं इस प्रश्न के उत्तर _the_ के लिए मेरी तलाश जारी रखूंगा। – noocyte