Knockout.js 如何获得具有结果的单个实体
堆栈:Knockout.js 如何获得具有结果的单个实体,knockout.js,asp.net-mvc-4,asp.net-web-api,upshot,Knockout.js,Asp.net Mvc 4,Asp.net Web Api,Upshot,堆栈: ASP MVC4测试版 Web API Knockout.js Upshot.js 我有一个主细节场景。在主控部分,我正在编辑订单,在详细信息部分,我有订单产品。我可以列出我所有的产品,而且效果很好,但我现在需要显示主控和详细信息 这是我的Web API方法: public Order GetSingleOrder(long orderId) { return DbContext.Orders .Include("Ord
- ASP MVC4测试版
- Web API
- Knockout.js
- Upshot.js
public Order GetSingleOrder(long orderId)
{
return DbContext.Orders
.Include("OrderedProducts")
.Include("OrderedProducts.Product")
.Include("OrderedProducts.Product.Family")
.Single(o => o.OrderId == orderId);
}
这工作很好,它只返回一个订单的产品和它的信息
但是在viewModel中,我不能以单订单的形式获得它,upshot datasource只提供了一个名为getEntities()
的方法,并且无法获得它的项目
var CreateOrEditViewModel = function () {
var self = this;
self.dsOrder = upshot.dataSources.SingleOrder.refresh();
self.orders = self.dsOrder.getEntities();
self.order = self.orders()[0];
};
它显示为惰性加载,并且在调用getEntities()
时,它没有任何项目,并且self.orders()
返回空集合
更新:
我需要一种方法来获取一个订单,绑定到该订单,让用户更新其字段,并通过数据源保存它 它不是延迟加载的,而是异步加载的。调用upshot.dataSources.SingleOrder.refresh()时,可以传入两个回调函数,一个表示成功,一个表示错误。在回调中,您将获得加载的数据。感谢异步提示,我能够在绑定上设置一个条件
if:orders().length>0
,从而停止了错误