【问题标题】:How to get single entity with upshot如何获得具有结果的单个实体
【发布时间】:2012-03-29 05:42:27
【问题描述】:

堆栈:

  • ASP MVC4 测试版
  • 网络 API
  • Knockout.js
  • Upshot.js

我有一个主从场景。在主部分,我正在编辑一个订单,在详细信息部分我有订单产品。我可以列出我拥有的所有产品并且效果很好,但我现在需要显示主数据和详细信息。

这是我的 Web API 方法:

 public Order GetSingleOrder(long orderId)
 {
     return DbContext.Orders
                         .Include("OrderedProducts")
                         .Include("OrderedProducts.Product")
                         .Include("OrderedProducts.Product.Family")
                         .Single(o => o.OrderId == orderId);
 }

这很好用,它只返回一个带有产品和信息的订单。

但在 viewModel 中,我无法将其作为单个订单获取,结果数据源仅提供了一个名为 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() 返回一个空集合。

更新: 我需要一种方法来获取一个订单,绑定到该订单,让用户更新它的字段,并通过数据源保存它。

【问题讨论】:

    标签: knockout.js asp.net-mvc-4 asp.net-web-api upshot


    【解决方案1】:

    它不是延迟加载的,而是异步的。当您调用 upshot.dataSources.SingleOrder.refresh() 时,您可以传入两个回调函数,一个用于成功,一个用于错误。在回调中,您将获得加载的数据。

    【讨论】:

    • 感谢异步提示,我能够在绑定 if: orders().length >0 上设置条件并停止错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2014-06-03
    • 2022-11-19
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2017-09-13
    相关资源
    最近更新 更多