2013-03-09 84 views
1

我正在尝试使用Durandal,Breeze和knockout来实现WebApi OData。但我总是得到以下错误:Breeze.js WebApi OData和Durandal

无法初始化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 } 
); 
} 

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

回答

6

我解决我的问题,我错过了采取参考:

datajs-1.1.0.js 

微风OData的功能是依赖于datajs库。