Breeze.js WebApi OData和Durandal

时间:2013-03-09 17:09:20

标签: asp.net knockout.js asp.net-web-api breeze durandal

我正在尝试使用Durandal,Breeze和淘汰赛来实现WebApi OData。但我总是低于错误:

无法初始化OData。需要支持远程OData服务

我创建了一个视图模型:

var my = {}; //my namespace
$(function () {
    var serverAddress = "/odata/";
    breeze.config.initializeAdapterInstances({ dataService: "OData" });
    var manager = new breeze.EntityManager(serverAddress);

    my.vm = {
        customers: ko.observableArray([]),
        load: function () {
            var query = breeze.EntityQuery.from("Customers");
            manager.executeQuery(query, function (data) {
                var results = data.results;
                $.each(data.results, function (i, c) {
                    my.vm.customers.push(c);
                });
            });
        }
    }

    my.vm.load();
    ko.applyBindings(my.vm);
});

在BreezWebApiConfig中提到:

public static void RegisterBreezePreStart() {
  GlobalConfiguration.Configuration.Routes.MapHttpRoute(
    name: "BreezeApi",
    routeTemplate: "api/{controller}/{action}"
  );
}

并注册了WebApi:

public static void Register(HttpConfiguration config)
{
  config.Routes.MapODataRoute("odata", "odata", GetEdmModel());
  config.Routes.MapHttpRoute(
      name: "DefaultApi",
      routeTemplate: "api/{controller}/{id}",
      defaults: new { id = RouteParameter.Optional }
  );
}

如果有人有这个想法,请建议我。

1 个答案:

答案 0 :(得分:6)

我解决了我的问题,我很想参考:

datajs-1.1.0.js

Breeze OData功能依赖于datajs库。