2012-05-12 11 views
8

में तारीखों को कैसे स्टोर करूं, सेन्चा टच 2 में, ऐसा लगता है कि केवल स्ट्रिंग, int, float, बूलियन डेटा प्रकार हैं। मैं फिर डेटाटाइम कैसे स्टोर करूं?मैं सेन्चा टच 2 मॉडल

अद्यतन

ठीक है, मैंने पाया मैं convert() उपयोग कर सकते हैं मूल्यों कन्वर्ट करने के लिए: http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Types

convert: एक समारोह फंक्शन डेटा में एक डेटा ब्लॉक से कच्चे डेटा मूल्यों कन्वर्ट करने के लिए होने के लिए क्षेत्र में संग्रहीत। समारोह पारित हो जाता है collowing पैरामीटर:
- वी: मिश्रित
डेटा मान के रूप में रीडर द्वारा पढ़ा, अगर अपरिभाषित कॉन्फ़िगर किया गया DefaultValue का प्रयोग करेंगे।
- आरईसी: मिश्रित
रीडर द्वारा पढ़ने वाली पंक्ति वाली डेटा ऑब्जेक्ट। रीडर प्रकार के आधार पर, यह एक ऐरे (ArrayReader) हो सकता है, एक ऑब्जेक्ट (JsonReader), या एक XML तत्व हो सकता है।

// Add a new Field data type which stores a VELatLong object in the Record. 
Ext.data.Types.VELATLONG = { 
    convert: function(v, data) { 
     return new VELatLong(data.lat, data.long); 
    }, 
    sortType: function(v) { 
     return v.Latitude; // When sorting, order by latitude 
    }, 
    type: 'VELatLong' 
}; 

लेकिन मैं वास्तव में कोड समझ में नहीं आता। convert() के लिए, पैरामीटर क्या सेट करते हैं? पहला परम अप्रयुक्त क्यों है और इसका उपयोग कब और किसके लिए किया जाता है? मैं ऐसे कस्टम प्रकार कैसे प्राप्त/सेट करूं (क्या यह v या dataconvert() में) हो सकता है?

+0

मैं इस पर आगे काम करूंगा। उम्मीद है कि अगले कुछ दिनों में आपके लिए एक जवाब होगा। रहो रहें :) –

उत्तर

-3

Sencha Touch 1.0date type in Model का समर्थन करता है।

हालांकि, Sencha Touch 2 केवल का समर्थन करता है केवल 4 मॉडल के लिए डेटा प्रकार।

  • स्ट्रिंग
  • पूर्णांक
  • फ्लोट
  • बूलियन

आप क्या कर सकते हैं आप अपने dateString प्रारूप में और फिर डाल सकते है पर बाद में यह date वस्तु में तब्दील का उपयोग कर एपीआई।

+1

तो क्या मैं उन सभी सेन्चा के बाहर करता हूं? मतलब मैं सेन्चा/एक्सटी मॉडल सत्यापन आदि का उपयोग नहीं कर सकता? ऐसा लगता है कि मैं सेन्चा मॉडल के सत्यापन और तारीख सत्यापन को अलग से कर रहा हूं, मैं सबकुछ मान्य कर रहा हूं? –

+0

कोई अन्य विकल्प नहीं, जब तक आप ST1 –

+0

पर वापस जाना नहीं चाहते हैं, Jiew Meng सही है। असल में मान्यताओं के साथ कस्टम डेटा प्रकार बनाने के लिए एक बेहतर विकल्प है। स्ट्रिंग का उपयोग करें, इसके बजाय काम कर सकता है, लेकिन प्रोग्रामेटिक नहीं है क्योंकि सत्यापन पूरी तरह से मॉडल परिभाषा से बाहर रखा जाता है। मैं इस पर आगे काम करूंगा। उम्मीद है कि अगले कुछ दिनों में आपके लिए एक जवाब होगा। रहो रहें :) –

9

http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Types-property-DATE ओह हे एक तारीख डेटा प्रकार ...

वैसे भी, आपके सवाल का जवाब देने से पहले! (Tl देखते हैं; एक तारीख डेटा प्रकार उदाहरण के लिए डॉ)

http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Field-cfg-convert

एक समारोह है जो एक उद्देश्य यह है कि मॉडल में संग्रहीत किया जाएगा में रीडर द्वारा प्रदान की मूल्य बदल देता है। यह पारित हो जाता है निम्नलिखित मानकों:

वी: के रूप में, रीडर द्वारा पढ़ा करता है, तो अपरिभाषित कॉन्फ़िगर किया गया DefaultValue का उपयोग करेगा मिश्रित

डेटा मान। आरईसी: Ext.data।मॉडल

डेटा ऑब्जेक्ट जिसमें पाठक द्वारा अब तक पढ़ा गया है। ध्यान दें कि इस बिंदु पर मॉडल पूरी तरह से पॉप्युलेट नहीं हो सकता है क्योंकि फ़ील्ड को आपके फ़ील्ड सरणी में परिभाषित करने के क्रम में पढ़ा जाता है।

Ext.define('Dude', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'locationInCity', convert: function(rawDataValue,record){ 
      return record.location+', '+record.city //would be something like Sprooklyn,Springfield 
     }}, 
     {name: 'firstname', mapping: 'name.first'}, 
     {name: 'lastname', mapping: 'name.last'}, 
     {name: 'city', defaultValue: 'homeless'}, 
     'state', 
     {name: 'location', convert: location} 
    ] 
}); 

आह और इस बिंदु पर मैं अपने उदाहरण का स्रोत पाया;)

// Add a new Field data type which stores a VELatLong object in the Record. 
Ext.data.Types.VELATLONG = { 
    convert: function(v, data) { // convert(value,record) 
     return new VELatLong(data.lat, data.long); //VELatLong was declared previously in another library as something according to example 
    }, 
    sortType: function(v) { 
     return v.Latitude; // When sorting, order by latitude //VELatLong will have lat and long properties, this is for complex sorting 
    }, 
    type: 'VELatLong' //This is what we use to reference it. 
}; 

सभी इस करता है और अधिक या कम एक नया डेटा प्रकार की घोषणा है। यह

// Add a new Field data type which stores a VELatLong object in the Record. 
Ext.data.Types.tehDate = { 
    convert: function(v, data) { // convert(value,record) 
     return new date(v); 
    }, 
    sortType: function(v) { 
     return v; // eh i have no idea whether its going to actually just accept date comparisons, though no there's real reason why it shouldn't 
    }, 
    type: 'tehDate' //This is what we use to reference it. 

}; 

^-- some of this is untested. 

टीएल कुछ ऐसा दिखाई देगा; डॉ

अब वास्तव में अपने -original- सवाल का जवाब देने:

Ext करता दिनांक प्रकार आप उपयोग कर सकते हैं: Ext.data.Types .DATE (साथ ही कुछ अन्य)।

मुझे लगता है कि प्रकार: दिनांक काम नहीं किया, अन्यथा हम यहां नहीं होंगे! तो शायद केवल 4 को ठीक से संदर्भित किया जाता है। लेकिन! यह करता है काम:

var types = Ext.data.Types; // allow shorthand type access 
Ext.define('Unit', { 
    extend: 'Ext.data.Model', 
    config: { 
     fields: [ 
      { name: 'dated', type: types.DATE }, 
      { name: 'pie', type: 'string' }, 
     ] 
    } 
}); 
abc=Ext.create('Unit',{ 
    dated: new Date().toString(), 
    pie:'hello' 
}) 
console.log(abc) 
console.log(abc.get('dated').getUTCFullYear())//it liiiiives! 

काम कर कोड के फिडल:

http://www.senchafiddle.com/#w97Oe

3

बस सरल तरीके से सब से ऊपर लपेट के लिए:

हाँ, आप आसानी से में दिनांक के रूप में दिनांक स्टोर कर सकते हैं अपने मॉडल के। ऐसा करने के लिए है कि आप की आवश्यकता होगी:

  1. एक मॉडल में क्षेत्र का प्रकार निर्दिष्ट करने (अपने app.js में required क्षेत्र में फ़ाइल Ext.data.Types शामिल करना न भूलें):

    {name: 'date', type: Ext.data.Types.DATE, dateFormat: 'd.m.Y'}; 
    
  2. संशोधक का उपयोग करने के उस के लिए दिनांक स्वरूप के साथ अपने XTemplates में फ़ील्ड:

    {date:date("d.m.Y")} 
    
  3. सही ढंग से स्ट्रिंग के लिए वापस दिनांक फ़ील्ड कन्वर्ट करने के लिए सर्वर को भेजने से पहले। उदाहरण के लिए, मैं प्रारूप "d.m.Y" में दिनांक स्टोर, इसलिए मैं निम्नलिखित रूपांतरण:

    Ext.Date.format(form.getValues().date, 'd.m.Y'). 
    

यह है कि! अब आपके पास देशी दिनांक क्षेत्र की सभी शक्तियां हैं यानी आप परेशानी के बिना समूह, सॉर्टिंग इत्यादि कर सकते हैं।

+0

पर एक नज़र डालें, मुझे लगता है कि मैंने चीनी रश के प्रभावों के दौरान इसे लिखा था .. : / – Alex