我在 SPA 中使用轻风.js并且从服务器加载的实体有问题。即,从元数据(使用metadataEntityType.createEntity()
)创建并添加到实体管理器的实体具有服务器端模型等所有属性,可以使用敲除进行绑定,这很酷。
问题是当我使用时entityModel.EntityQuery.from("WorkOrders")
,我传递给它的.then
promise 的 successCallback 获得了一个带有 results 属性的数据对象,其中包含一个 vanilla js 对象数组,其中所有 value == null 的属性都丢失了(这正是服务器发送的方式数据通过网络传输,但我认为它应该是这样的,因为微风在客户端上有所有元数据,不需要所有属性都知道它们存在)。
我有我的自定义构造函数,它可以像 createEntity() 中的那样制作完整的淘汰对象,但我认为必须有一种更好的方法让微风自动为我处理这个问题。我不确定是否应该将这些对象添加到实体管理器,因为我认为它们应该已经存在,并且我注册了我的自定义构造函数来存储 using 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}]