angularjs - Breeze.JS 使用 angular.js http

标签 angularjs breeze datajs

我正在尝试让 Breeze.JS 利用 Angular 的 http 服务进行 ajax 调用。我按照文档(http://www.breezejs.com/documentation/customizing-ajax)并应用了它。然而它不起作用。

此外,当我检查 Breeze 源代码时,我看到了以下内容:

fn.executeQuery = function (mappingContext) {

    var deferred = Q.defer();
    var url = mappingContext.getUrl();

    OData.read({
            requestUri: url,
            headers: { "DataServiceVersion": "2.0" }
        },
        function (data, response) {
            var inlineCount;
            if (data.__count) {
                // OData can return data.__count as a string
                inlineCount = parseInt(data.__count, 10);
            }
            return deferred.resolve({ results: data.results, inlineCount: inlineCount });
        },
        function (error) {
            return deferred.reject(createError(error, url));
        }
    );
    return deferred.promise;
};

它只是调用 OData.read,而不对 http 服务执行任何操作。因此,OData 使用内置的 ajax。我不明白上面的代码如何定制Breeeze.JS的ajax

最佳答案

问题是 Breeze OData 路径不使用 Breeze Ajax 适配器。更改 Breeze Ajax 适配器(如“Breeze Angular Service”所做的那样)不会有帮助。

目前,“OData”和“webApiOData”DataService 适配器均委托(delegate)给用于 AJAX 服务(以及其他 OData 相关支持)的第 3 方 datajs 库。

您可以将其 odata.defaultHttpClient 替换为您自己的基于 $http 的版本。这不是一个微不足道的任务。 Look here for the source code ;大约有 160 行。

我想我们可以写一个。这并不是一个优先事项。

除非有人这样​​做或者我们放弃datajs(如果有的话也不会很快),否则您将不得不使用datajs ajax。

抱歉。

附:几乎每个与 OData 数据源交互的人都使用 datajs 库。也许您可以与该库的作者交谈并尝试让他们支持$http

关于angularjs - Breeze.JS 使用 angular.js http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22426240/

相关文章:

javascript - SignalR 仅在事件 SILO 中可用

asp.net - 安装 ASP.NET 和 Web Tools 2012.2 后无法看到新功能

asp.net-web-api - Http 响应中缺少 DataServiceVersion header

javascript - Breeze 错误 : Illegal construction - use 'or' to combine checks

requirejs - 如何加载在单个文件中定义的多个命名 AMD 模块?

c# - 将文档从 WCF 服务下载到网页

javascript - 使用 c3 Angular Directive(指令)的区域折线图

angularjs - 如何在 angular js 中设置 XSRF 保护?

javascript - 访问angularjs中另一个模块中定义的工厂

c# - Breeze 过滤。在服务器端展开