मुझे लगता है कि यह दस्तावेज में मामूली त्रुटियों में से एक है। मैं उन्हें, उदा कुछ कोड
if (Ext.data) {
Ext.data.validations.custom = function (config, value) {
if (config && Ext.isFunction(config.fn)) {
//this should be the model
if (config.self) {
return config.fn.call(config.self, value);
} else {
return config.fn(value);
}
}
else
{
return false;
}
};
Ext.data.validations.customMessage = "Error";
}
फिर जोड़कर काम करने के लिए, एक मॉडल के लिए एक सत्यापन जोड़ने प्रकार 'कस्टम' पर सेट के साथ मॉडल के सत्यापन सरणी के लिए एक वस्तु को जोड़ने के लिए मिला
{
type: 'custom', field: 'SomeField', message: "Your field is bad",
fn: function (SomeFieldValueForThisInstance) {
//Add some validation code. The this pointer is set to the model object
//so you can call this.get("SomeOtherFieldToCheck")
//or any other instance method
//if the field is good
return true;
//else
return false;
}
}
अद्यतन: @salgiza सही था, वहाँ के लिए कुछ कदम मैं क्रम में उल्लेख करने के लिए 'इस' सही ढंग से सूचक स्थापित करने के लिए भूल गया है। आप Sencha स्पर्श कोड में देखें, तो आप Ext.data.Model के निर्माता के अंत में यह वहाँ एक init समारोह वस्तु पर परिभाषित है यह देखने के लिए जाँच करता है कि देखेंगे, और यदि हां, तो यह कहता है
if (typeof this.init == 'function') {
this.init();
अपने मॉडल को परिभाषित करने के बाद आप प्रोटोटाइप में एक इनिट फ़ंक्शन जोड़ सकते हैं। फ़ंक्शन में, ऑब्जेक्ट के सत्यापन के लिए पुनरावृत्त करें और इसके लिए एक संदर्भ जोड़ें। किसी भी मॉडल के निर्माण से पहले यह कदम किया जाना चाहिए।
YourModel.prototype.init = function() {
var i, len;
if (this.validations) {
for (i = 0, len = this.validations.length; i < len; i++) {
this.validations[i].self = this;
}
}
};
फिर ऊपर कस्टम मान्यता समारोह में, बस अगर config एक आत्म सूचक है की जाँच करें और अगर यह होता है, स्वयं से कॉल करने की। मैंने उपरोक्त कोड को स्वयं का उपयोग करने के लिए संपादित किया है।
नोट: मैं मॉडल के init समारोह दस्तावेज नहीं दिख रहा है, इसलिए यदि Sencha यह से छुटकारा मिलता है, तो आप किसी अन्य तरह से मॉडल के सत्यापन के लिए इस सूचक को जोड़ने के लिए होगा।
क्षमा करें अगर इससे किसी के लिए भ्रम पैदा हुआ।
मैं नहीं जानता, क्योंकि आप अपने उत्तर पोस्ट अगर यह बदल गया है, लेकिन Sencha में 1.1.1 सत्यापन गुंजाइश सत्यापन वस्तु है, इसलिए वहाँ किसी भी तरह से अन्य मूल्यों को प्राप्त करने के लिए प्रतीत नहीं होता मॉडल को सत्यापित करने के अलावा, यह कुछ भी नहीं करता है, क्योंकि यह "मॉडल" मॉडल नहीं है)। – salgiza
1) आपके पास बहुत अधिक 'अन्य' शाखाएं हैं। 2) 'YourModel.prototype.init' कहां जाता है? इसका कोई अर्थ नहीं निकलता। –
@ सराह वेसल 1. आप सही हैं। मैं दूसरे ब्लॉक के लिए एक} गायब था। उसके लिए माफ़ करना। 2. YourModel.prototype.init आपके मॉडल घोषित करने के बाद कहीं भी इसे निष्पादित कर सकता है।मैं अपनी निर्भरताओं को प्रबंधित करने के लिए RequJS का उपयोग करता हूं, इसलिए मैं मॉड्यूल को शामिल करता हूं जो मेरे मॉडल को शामिल करने के बाद प्रोटोटाइप में जोड़ता है। –