【发布时间】:2012-12-18 09:37:11
【问题描述】:
我在 SPA 中使用 breeze.js,但从服务器加载的实体有问题。即,从元数据创建的实体(使用metadataEntityType.createEntity())并添加到实体管理器具有所有属性,如服务器端模型,准备好与敲除绑定,这很酷。
问题是当我使用entityModel.EntityQuery.from("WorkOrders") 时,我传递给它的.then 承诺的successCallback 获得了一个带有results 属性的数据对象,其中包含一个vanilla js 对象数组,其中所有具有value == null 的属性都是丢失(这正是服务器通过线路发送数据的方式,但我想这就是应该的方式,因为微风在客户端上有所有元数据,不需要所有属性都知道它们存在)。
我有我的自定义构造函数,它可以像 createEntity() 中的那样生成成熟的淘汰对象,但我认为必须有更好的方法让微风自动为我处理这个问题。我不确定是否应该将这些对象添加到实体管理器中,因为我认为它们应该已经存在,并且我注册了我的自定义构造函数以使用 entityManager.metadataStore.registerEntityTypeCtor 进行存储,但这并没有改变成功回调得到的结果,它总是很简单JSON 就像从服务器发送的一样。
更新:服务器调用返回json有效载荷的方法代码为
[HttpGet]
public IQueryable<WorkOrder> WorkOrders()
{
return (IQueryable<WorkOrder>)_contextProvider.Context.WorkOrders;
}
正如@Jay 在其回答和评论中指出的那样,这可能是行为的原因。这是返回的 JSON 负载:
[{"$id":"1","$type":"WorkOrders.Domain.Models.WorkOrder, WorkOrders.Domain","Approved":false,"DateModified":"2013-01-02T22:31:20.897","RequestForEstimate":false,"Id":5}]
【问题讨论】:
标签: javascript breeze