【问题标题】:AngularJS ngResource custom params passing two '&' to odata serviceAngularJS ngResource 自定义参数将两个“&”传递给 odata 服务
【发布时间】:2015-02-07 02:22:43
【问题描述】:

我发誓这在我将 ngResource 升级到 1.3.11 之前可以正常工作...

所以我的问题是,当我将自定义过滤器参数应用于我的 odata 资源请求时,过滤器会在写入参数之前附加一个额外的 $。

http://myservice/odata/Data?&format=application%2Fjson&$filter=year(Date)+lt+2012

以上通过提琴手工作得很好,是正确的请求。

我正在使用 ngResource 发出 get 请求

data.factory('DataService', ['$resource', function ($resource) {
    var odataUrl = 'http://myservice/odata/Data?&format=application%2Fjson'; 
    var d = $resource('', {
        filter: '@filter'
    }, {            
        queryByYear: {
            method: 'GET',
            url: odataUrl, isArray: false
        }
    });
    return d;

}]);

控制器功能如下:

$scope.getByYear = function (op) {

        DataService.queryByYear({ filter: 'year(PublishedDate) ' + op }, function (data) {
            $scope.events = data;
        });
    };

由于某种原因,这个请求的输出如下:

http://myservice/odata/Data?&format=application%2Fjson&$$filter=year(Date)+lt+2012

注意过滤器参数旁边的第二个和完全不必要的 &...

有什么想法吗?

【问题讨论】:

  • 其实和ngResource的版本无关。研究 AngularJS 的变化以及它们如何处理 xhr。

标签: angularjs odata ngresource


【解决方案1】:

在查看将我的 odata 请求转换为正确格式时发生的情况后,我意识到我添加了一个第三方 angular-odata 模块来执行转换。较新的 angularjs $http 已经处理了这种转换。呵呵!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-09
    • 2023-04-04
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多