2012-09-19 14 views
9

मैं knockout.js का उपयोग कर रहा हूं और एमवीसी 4 के साथ नॉकआउट-सत्यापन का उपयोग कर रहा हूं। मैं नॉकआउट-सत्यापन के साथ क्लाइंट साइड सत्यापन ठीक कर सकता हूं। हालांकि मुझे यह सुनिश्चित करने की ज़रूरत है कि मेरे नियंत्रक को पोस्ट किए गए किसी भी व्यूमोडेल मान्य हैं। इसलिए मैं मैन्युअल रूप से अपने व्यू मॉडल सर्वर पक्ष को प्रमाणित करता हूं और जेएसओएन के रूप में क्रमबद्ध मॉडलस्टेट लौटाता हूं (एक सह-कार्यकर्ता ने ऐसा करने के लिए एक सरल कार्य लिखा है)। मेरी समस्या यह है कि मैं कुछ करना चाहता हूं कि आउटपुट त्रुटियों के लिए JSON क्रमबद्ध मॉडलस्टेट का उपभोग करने के लिए नॉकआउट-सत्यापन का उपयोग कैसे करें।क्या मैं मैन्युअल रूप से नॉकआउट-सत्यापन में त्रुटि संदेश जोड़ सकता हूं?

तो क्या दस्तक-सत्यापन में त्रुटियों और संदेशों को मैन्युअल रूप से जोड़ने का कोई तरीका है?

+0

मैं निम्नलिखित प्रश्न पूछा और एक अच्छी प्रतिक्रिया मिली http://stackoverflow.com/questions/9128530/how-do-i-get-modelstate-addmodel-error-to-bind-to-knockout- गतिशील रूप से निर्मित-v – GraemeMiller

+0

धन्यवाद - मैंने पहले देखा था, मुझे बिल्कुल यकीन नहीं है कि मैं क्या चाहता हूं, क्योंकि मैं वास्तव में एमवीसी के साथ आने वाली मॉडलस्टेट सामग्री के लिए नॉकआउट-सत्यापन प्लगइन को चिपकाने की कोशिश कर रहा हूं। मैं इसे एक और पढ़ूंगा जैसा कि मैंने गलत समझा होगा? – bplus

उत्तर

12

नवीनतम नॉकआउट-मान्यता संस्करण इसे करने के लिए जोड़ा गया है निम्नलिखित:

//manually set error state 
observable.setError = function (error) { 
    observable.error = error; 
    observable.__valid__(false); 
}; 

//manually clear error state 
observable.clearError = function() { 
    observable.error = null; 
    observable.__valid__(true); 
} 

ताकि आप उन का उपयोग कर सकते मैन्युअल रूप से अपने observables करने के लिए त्रुटियों को जोड़ने के लिए है, लेकिन अन्य प्रश्न हैं जो लिंक ग्रीम asnwered था की तरह, वहाँ है उन्हें मानचित्र बनाने के लिए कोई रास्ता नहीं बनाया गया।

जो मैंने पहले किया है वह सर्वर साइड सत्यापन त्रुटियों को दिखाने के लिए फॉर्म के नीचे/ऊपर मॉडल स्थिति त्रुटियों को प्रदर्शित करता है, और इनपुट सत्यापन त्रुटियों के बगल में, सभी क्लाइंट पक्ष को कॉन्फ़िगरेशन संभालता है। जटिल मैपिंग योजना के साथ आने से कहीं अधिक आसान, खासकर यदि आपके पास जटिल फॉर्म डेटा है।

10

केविन ने जो कहा, उसके अलावा मुझे पता चला कि मुझे वास्तव में संदेश दिखाने के लिए isModified पर कॉल करने की आवश्यकता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि जब संदेश प्रकट होते हैं तो मैंने कुछ डिफ़ॉल्ट सेटिंग्स बदल दीं।

observable.setError('Your password is incorrect'); 
observable.isModified(true); 
+0

यह उपयोगी है। मुझे लगता है कि ऐसा इसलिए है क्योंकि सत्यापन तब तक प्रदर्शित नहीं होता जब तक कि सत्यापन दिनचर्या ट्रिगर नहीं हो जाती। मान को संशोधित करना या किसी समूह को सत्यापित करना सत्यापन को ट्रिगर करेगा और पहले सेट त्रुटि प्रकट होने का कारण बन जाएगा। –