Как получить единый объект с upshot - PullRequest
1 голос
/ 12 марта 2012

Стек:

  • ASP MVC4 Beta
  • Веб-API
  • Knockout.js
  • Upshot.js

У меня есть сценарий мастер-детали.В основной части я редактирую заказ, а в части деталей - продукты заказов.Я могу перечислить все продукты, которые у меня есть, и это прекрасно работает, но теперь мне нужно отобразить мастер и детали.

Это мой метод веб-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() возвращает пустой сбор.

Обновление: Мне нужен способ получить один заказ, привязаться к нему, позволить пользователю обновить его поля и сохранить его через источник данных.

1 Ответ

3 голосов
/ 13 марта 2012

загружается не лениво, но асинхронно. Когда вы вызываете upshot.dataSources.SingleOrder.refresh (), вы можете передать две функции обратного вызова, одну для успеха и одну для ошибки. В обратном вызове вы получите загруженные данные.

...