【问题标题】:Catching params using $httpBackend使用 $httpBackend 捕获参数
【发布时间】:2015-12-16 23:38:27
【问题描述】:

试图从这个 url 获取一个参数:/api/events/{id}

$httpBackend.whenGET(/\/api\/events\/(.+)/, undefined, undefined, ['eventID'])
               .respond(function(method, url, data, headers, params) {
                    console.log('get-params: ', params);
                    return 'test';
                });

这也不适合我:

$httpBackend.when('GET', /\/api\/events\/(.+)/).respond...

截至AngularJS httpBackend Documentation(动态响应),这应该可以正常工作。我错过了什么,还是这是一个错误?

Callback 使用如下 URL 调用:“/api/events/1”,但参数始终保持为 undefinded

编辑: 这是 AngularJS 版本 1.5.0

【问题讨论】:

  • 尝试使用否定字符类而不是.:/\/api\/events\/([^\/]+)/
  • 谢谢,试过也失败了。我的版本是:AngularJS v1.4.7。 (也模拟一下)我可能会尝试最新的。
  • 好的,找到了,这个功能将在 1.5.0 中出现,仍在开发中。奇怪的是,这个版本的文档是默认的。

标签: angularjs regex httpbackend


【解决方案1】:

对于低于 1.5.0 的 AngularJS 版本,这可能是一个简单的解决方案,使用参数测试动态 URL:

$httpBackend.when('GET', /\/api\/events\/.+/)
                .respond(function(method, url, data, headers) {
                    var args = url.match(/\/api\/events\/(.+)/);
                    console.log('some Data', url, args);
                    console.log('First Arg: ', args[1]);
                    return args[1];
                });

【讨论】:

    猜你喜欢
    • 2015-12-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多