8

sencha touch 2 では、string、int、float、boolean のデータ型しかないようです。では、日時を保存するにはどうすればよいですか?

アップデート

convert()OK、値の変換に使用できることがわかりました: http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Types

convert: 関数 データ ブロックの生データ値をフィールドに格納するデータに変換する関数。関数には以下のパラメーターが渡されます。
- v : Mixed
Reader によって読み取られたデータ値。未定義の場合は、構成された defaultValue が使用されます。
- rec : Mixed
Reader によって読み取られた行を含むデータ オブジェクト。Reader の種類に応じて、これは配列 (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())。

4

3 に答える 3

9

http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Types-property-DATE ああ、日付データ型...

とにかく、あなたの質問に答える前に!(日付データ型の例については、tl;dr を参照してください)

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

Reader によって提供された値をモデルに格納されるオブジェクトに変換する関数。次のパラメータが渡されます。

v : 混合

Reader によって読み取られるデータ値。未定義の場合は、構成された defaultValue が使用されます。rec : Ext.data.Model

これまでにリーダーによって読み取られたモデルを含むデータ オブジェクト。フィールドはフィールド配列で定義されている順序で読み取られるため、この時点でモデルが完全に設定されていない可能性があることに注意してください。

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.

TL;DR

実際にあなたの元の質問に答えるために:

Ext DOES には、使用できる日付型があります: Ext.data.Types.DATE (およびその他のいくつか)。

type: 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

于 2012-05-22T20:27:12.557 に答える
3

上記のすべてを簡単な方法でラップするだけです:

はい、モデルに日付を日付として簡単に保存できます。これを行うには、次のものが必要です。

  1. モデルでフィールドのタイプを指定するには ( app.js のフィールドにファイルを含めることを忘れないでください) Ext.data.Types:required

    {name: 'date', type: Ext.data.Types.DATE, dateFormat: 'd.m.Y'};
    
  2. XTemplates でそのフィールドに日付形式の修飾子を使用するには:

    {date:date("d.m.Y")} 
    
  3. サーバーに送信する前に、日付フィールドを文字列に正しく変換します。たとえば、日付を format"d.m.Y"で保存するので、次の変換を行います。

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

それでおしまい!これで、ネイティブの日付フィールドのすべての機能を利用できるようになりました。つまり、グループ化、並べ替えなどを簡単に行うことができます。

于 2013-02-26T20:56:50.007 に答える
-3

Sencha Touch 1.0モデルの日付型をサポートします。

ただし、 Modelでは4つのデータ型Sencha Touch 2しかサポートしていません。

  • 整数
  • 浮く
  • ブール値

あなたができることは、あなたがあなたdateのフォーマットを入れて、後でそれをAPIを使ってオブジェクト Stringに変換すること ができるということです。date

于 2012-05-12T12:59:14.117 に答える