我希望我的实体中的所有日期类型始终转换为 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;
}
}
}
}