0

Date インスタンスである「startDate」という名前のフィールドを含む qx.data.marshal.Json.createModel で作成されたモデルがあります。モデル内の同じ Date インスタンスではなく、Date のコピーを返すために getStartDate をオーバーライドしたいと思います。

http://manual.qooxdoo.org/2.1/pages/data_binding/models.htmlを見たことがありますが、「使用可能なメソッドを確認するには、qx.data.store.IStoreDelegate の API ドキュメントを参照してください。そしてそれらを実装する方法。」. IStoreDelegate 情報は完全ではなく、使用方法がわかりません ( http://demo.qooxdoo.org/2.1/apiviewer/index.html#qx.data.store.IStoreDelegate )。

var delegate = {
    getModelMixins : function(properties) {

    }
};

var marshaler = new qx.data.marshal.Json(delegate);
marshaler.toClass(data);
var model = marshaler.toModel(data);
// the problem with weeks is that someone changes the dates
// we must make the getFromDay to return a copy of the data
weeks.append(qx.data.marshal.Json.createModel(weeksRaw));

どうすればいいですか?

4

1 に答える 1

0

代わりに、ミックスインを使用してデリゲートを作成しました。

// notice the _ variables
weeksRaw.push({
     label: "week: " + weeksNum + ' [' + startDayString + '-' + endDayString + '['
    ,_fromDay: week.startDay
    ,_toDay: week.endDay
});
var delegate = {
    getModelMixins : function(properties) {
        return myapp.models.marshalMixins.Week;
    }
};
var marshaler = new qx.data.marshal.Json(delegate);
marshaler.toClass(weeksRaw);
var model = marshaler.toModel(weeksRaw);

ミックスイン:

qx.Mixin.define('production.models.marshalMixins.Week', {
    members: {
        getFromDay: function(){
            return new Date(this.get_fromDay());
        }
        ,getToDay: function(){
            return new Date(this.get_toDay());
        }
    }

});
于 2013-01-22T17:25:04.830 に答える