2012-10-26 17 views
10

पर नॉकआउट प्रमाणीकरण मैं एक सरणी में किसी फ़ील्ड को सत्यापित करने के लिए नॉकआउट सत्यापन का उपयोग कर रहा हूं। यह त्रुटि संदेश प्रदर्शित करेगा, लेकिन मुझे काम करने के लिए valid() या ko.validation.group() नहीं मिल सकता है। सबमिट करने के लिए मुझे इनमें से एक की आवश्यकता है। http://jsfiddle.net/mduey/hEJWJ/80/ऐरे

धन्यवाद:

errors = ko.validation.group(contactList(), {deep:true}); 

यहाँ बेला है!

+0

नॉकआउट जिस तरह से वस्तुओं सरणी में जुड़ जाते हैं साथ कोई समस्या आ प्रतीत होता है। यदि ऑब्जेक्ट सरणी परिभाषा के भीतर बनाए जाते हैं, और लोड विधि से हटा दिए जाते हैं, तो यह अपेक्षा के अनुसार काम करता है। –

उत्तर

3

समस्या यह है कि जब आप अपने observableArray में नए सरणी तत्व जोड़ते हैं तो सत्यापन विफल नहीं होता है। Here is quick an dirty solution which can be optimized further.

हर बार जब आप अपने observableArray में कोई नया तत्व जोड़ते हैं तो मैं सत्यापन चलाता हूं, इसके परिणामों को देखने योग्य में डालता हूं ताकि इसे बाइंडिंग देखकर सही तरीके से ट्रैक किया जा सके। इसे throttle सेटिंग के साथ और बेहतर किया जा सकता है, इसलिए सत्यापन प्रत्येक चक्र के लिए सरणी (चक्र के लिए वास्तविक) के लिए नहीं चलाया जाएगा। जैसा कि मैंने वर्तमान में ko.validation.group देखा है, जैसा कि इसे उचित रूप से देखने योग्य नहीं है, इसलिए मुझे इसके लिए एक रैपर बनाना पड़ा।

5

मुझे एक ही समस्या थी और इसे देखने योग्य कॉन्फ़िगरेशन गुण को गलत पर सेट करके हल किया जा सकता है। यह गहरी मान्यता चलाता है हर बार त्रुटियों समारोह कहा जाता है:

ko.validation.init({ 
     grouping: { 
      deep: true, 
      observable: false //important ! Needed so object trees are correctly traversed every time so added objects AFTER the initial setup get included 
     }, 
     insertMessages: true, 
     messagesOnModified: true, 
     debug: false 
    }); 

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

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