0

エンティティのすべての Date タイプを常に momentjs に変換したい。これに使用したソリューション (コード 2) は、getResources (コード 1) で正常に機能します。初期化子は、「イベント」エンティティと「シフト」エンティティの両方に対してトリガーされます。しかし、getUser を呼び出すと、expand は正常に機能し、'Order' と 'Event' の両方の正しいデータを取得しますが、'Event' の初期化子は決してトリガーしません。理由はありますか?プロパティパスの展開を使用しているためですか?

また、私のエンティティのすべての Date タイプを momentjs に変換するためのより良い解決策を考えることができれば、それも喜んで受け入れます。

コード 1:

var getResources = function () {
    var query = breeze.EntityQuery
        .from("Resources")
        .expand("Event, Shift")
        .orderBy("ResourceId");

    return manager.executeQuery(query)
        .fail(fail);
    }

var getUser = function () {
    var query = breeze.EntityQuery
        .from("LoggedInUser")
        .expand("Order.Event")
        .orderBy("Email");

    return manager.executeQuery(query)
         .fail(fail);
}

コード 2:

function configureMetadataStore(metadataStore) {
    metadataStore.registerEntityTypeCtor('Shift', null, momentInitializer);
    metadataStore.registerEntityTypeCtor('Event', null, momentInitializer);
    metadataStore.registerEntityTypeCtor('Order', null, momentInitializer);            
}

function momentInitializer(entity) {
    var newMoment,
        prop;

    for (prop in entity) {
        if (ko.isObservable(entity[prop])) {
            if (entity[prop]() instanceof Date) {
                newMoment = ko.observable(moment(entity[prop]()));
                entity[prop] = newMoment;
            }
        }
    }            
}
4

1 に答える 1