如何在不更改路径的情况下将参数传递到资源中?

时间:2016-05-20 16:43:57

标签: angularjs node.js

基本上,我需要从我的angular应用程序中获取一个参数,以便在我的nodeJS服务中使用。我有一个看起来像这样的GET请求:

resource: $resource(nodeRoute + '/test'. {}, {
    query: {
            method: 'GET',
            params: {
                offset: '@offset',
                limit: '@limit'
            },
            isArray: true,
            url: ohio.resources.netreg + '/registrations'
    },
}

'offset'和'limit'是我试图传递的内容,通过我的routeprovider解析块中的调用:

.when('/'. {
    templateUrl: 'views/home.html',
    title: 'test',
    resolve: {
        registrations: ['thisResource', function(thisResource){
            return thisResource.resource.query(0, 2).$promise
        ]);
    }

我试图将值0和2传递给offset和limit,这样我就可以继续在服务器端节点中使用这些值。如果在我的资源中,我硬编码偏移并限制某些值,这很有效,但我需要更新这些值,因此这需要像我上面尝试的那样工作。我错过了什么?我假设@字符仅在我有像/:offset /:limit这样的路由时才有效,但我不能在这里做到这一点。

2 个答案:

答案 0 :(得分:1)

试试这个

resource: $resource(nodeRoute + '/test/:offset/:limit' {}, {
query: {
        method: 'GET',
        params: {
            offset: '@offset',
            limit: '@limit'
        },
        isArray: true,
        url: ohio.resources.netreg + '/registrations'
  },
}

并在解决中使用此

 resolve: {
    registrations: ['thisResource', function(thisResource){
        return thisResource.resource.query({offset:0, limit:2}).$promise
    ]);
}  

答案 1 :(得分:1)

如果您不想通过get指定参数,那么另一个选项是使用一个帖子,您可以在其中指定params而不必附加到您的URL。

所以在你的节点js你可以访问像

这样的帖子参数
${widget.getCreated()}

然后在您的资源中而不是获取它将成为一个帖子。 在你的控制器中,你可以在你的决心中传递这样的参数。

postrouter.post('/test', function (req, res){
      //you can access your post params via req.body
      console.log(req.body)//gives you your passed objects
})
希望它有所帮助。!!