ngResource Url参数问题

时间:2016-06-09 13:37:07

标签: angularjs angular-resource

我正在使用HTML,JS,AngularJS针对SharePoint Server 2013 Search API的REST端点创建一个提前输入人员搜索。

我的具体问题在于我的资源定义。

我正在使用的SharePoint搜索查询的模式包含一个冒号(:):

.../_api/search/query?querytext=%27John+AND+Memberships:GRP-InformationSystems%27&sourceid=%27B09A7990-05EA-4AF9-81EF-EDFAB16C4E31%27

以下是该服务的实施:

var searchService = servicesMod.factory('searchPeople', ['$resource',
    function ($resource) {
        return $resource('http://teamsint/_api/search/query?querytext=%27:searchText+AND+Memberships:GRP-InformationSystems%27&sourceid=%27B09A7990-05EA-4AF9-81EF-EDFAB16C4E31%27', { 'searchText': '@@searchText' }, {
            query: { method: 'GET', isArray: false, withCredentials: true },
        });
    }]);

...而angularjs错误地将其识别为参数并将其从资源URL中删除。

并且请求按照以下方式命中服务器:

http://mysharepointserver/_api/search/query?querytext=%27John+AND+Memberships:-InformationSystems%27&sourceid=%27B09A7990-05EA-4AF9-81EF-EDFAB16C4E31%27

“:GRP”是搜索查询的一部分,正在从URL中解析出来。

有没有办法escape冒号,所以在这种情况下会被忽略?

谢谢!

1 个答案:

答案 0 :(得分:2)

这里的修复是当你不希望angularjs(1.5)认为它是一个参数时,用:替换查询字符串中的冒号(%3A)。