将字典传递给ngResource以获取多个网址参数

时间:2017-03-24 23:47:41

标签: angularjs

我在angularjs应用程序中有以下工厂方法。

var mod = angular.module('scheduleApp.services', ['ngResource', 'ui.bootstrap']);

mod.factory('SchedulesFactory', function ($resource) {
    return $resource('http://devhost\\:8080/api/schedule', {}, {
        query: { method: 'GET', isArray: false},
        create: { method: 'POST' },
        getPage: {  method: 'GET', 
                    params: {page: '@page', 
                                q: {"order_by": [{"field": "@fieldName", "direction": "@direction"}]}} },
        getPageSorted: {method: 'GET'}

    });
});

在我的GET处理程序getPage中,我想传递一个字典,我可以从中解析三个变量,page,fieldName和direction。

var n = {};
n.page = $scope.currentPage;
n.fieldName = $scope.fieldName
n.direction = $scope.direction

但这不起作用。当我检查我的GET URL字符串时,angularjs不会将fieldName和direction标识符替换为我的字典中的值。以下网址方案是GET' ed:

/ API /时间表方向= ASC&安培; fieldName的= ID&安培;页= 1和Q = {" ORDER_BY":[{"字段":" @ fieldName的&# 34;,"方向":" @方向"}]}

以下是我调用getPageSorted例程的方法:

var n = {};
n.page = $scope.currentPage;
n.fieldName = "id"
n.direction = "asc"
SchedulesFactory.getPage(n, function(object) {
    console.log(object);
    $scope.schedules = object.objects;
    $scope.totalItems = object.num_results;
});

是否有人建议我如何具体解决这个问题?

1 个答案:

答案 0 :(得分:1)

我不相信ng-resource支持你想要做的事情。您需要使用函数代替“q”并在那里进行自己的更改。