2012-10-23 11 views
29

मैं knockout.validation प्लगइन का उपयोग करने का प्रयास कर रहा हूं। मैंने एक उदाहरण बनाया है व्यूमोडेल:ko.validation.group फ़ंक्शन का उपयोग कैसे करें

function exampleViewModel() { 
    this.P1 = ko.observable().extend({ required : true }); 
    this.P2 = ko.observable().extend({ required : true }); 
    this.P3 = ko.observable().extend({ required : true }); 
    this.P4 = ko.observable().extend({ required : true }); 

    this.errors = ko.validation.group(this); 
}  

उपर्युक्त दृश्य मॉडल में मैंने वर्तमान ऑब्जेक्ट के लिए त्रुटियों नामक एक सत्यापन समूह बनाया है। अब यदि कोई त्रुटिपूर्णता नियम त्रुटियों की तुलना में 4 में से किसी भी 1 प्रॉपर्टी पर विफल रहता है तो संपत्ति में एक त्रुटि संदेश होता है।

My question is, अगर मैं केवल 3 गुणों का सत्यापन समूह बनाना चाहता हूं 0 सेमैं इसे कैसे कर सकता हूं?

उत्तर

53

यह मेरे लिए अच्छा काम करता है। this पर समूहबद्ध करने के बजाय, एक प्रॉक्सी ऑब्जेक्ट बनाएं जो आपके द्वारा मान्य गुणों को रखती हो।

this.errors = ko.validation.group({ 
    P1: this.P1, 
    P2: this.P2, 
    P3: this.P3 
}); 

आप ऐसा करते हैं तो validatedObservablegroup के बजाय काम में लें। न केवल आपको त्रुटियां मिलती हैं, लेकिन आप सामूहिक रूप से जांच कर सकते हैं कि सभी गुण isValid संपत्ति का उपयोग कर वैध हैं या नहीं।

this.validationModel = ko.validatedObservable({ 
    P1: this.P1, 
    P2: this.P2, 
    P3: this.P3 
}); 

// is the validationModel valid? 
this.validationModel.isValid(); 
// what are the error messages? 
this.validationModel.errors(); 
+0

Durandal प्रत्यक्ष प्लगइन सत्यापन मुद्दे को डीबग करने के लिए इस दृष्टिकोण का इस्तेमाल किया। 'this.errors = ko.validation.group ({P1: देखने योग्य (यह, 'पी 1')}); 'मुझे विश्वास है कि इसे गेटर/सेटर्स का पता लगाना चाहिए था और तदनुसार प्रतिक्रिया व्यक्त की थी, लेकिन यह कम से कम सत्यापन कार्यों को साबित कर दिया। – MrYellow

11

documentation में वर्णित सही तरीके से केवल विशिष्ट observables मान्य करने के लिए के रूप में है:

this.errors = ko.validation.group([this.P1, this.P2, this.P3]); 
+6

प्रलेखन से: > "ध्यान दें कि पहले पैरामीटर को सरणी होने की आवश्यकता नहीं है। यदि आपके पास केवल एक ही वस्तु है, तो आप उसे एक सरणी में लपेटने के बिना एक नंगे वस्तु के रूप में पास कर सकते हैं।" प्रलेखन लिंक के लिए –

+0

tks! – Alex

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