エンティティのすべての 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;
}
}
}
}