gpt4 book ai didi

AngularJS 假 $httpBackend.whenPOST() 未捕获类型错误 : Cannot read property '2' of undefined

转载 作者:行者123 更新时间:2023-12-04 05:54:04 25 4
gpt4 key购买 nike

AngularJS 的新手,并获得了一个模拟 $httpBackend,如文档中所述(参见此处:http://docs.angularjs.org/api/ngMockE2E.$httpBackend)。我可以重现 GET 代码,例如:

$httpBackend.whenGET('/phones').respond(phones);

但是,POST 方法失败并出现 angular-mocks.js 错误。这是我指定在 POST 上发生的事情:
      $httpBackend.whenPOST('/phones').respond(function(method,url,data){
console.log(data);
phones.push(angular.fromJson(data));
});

这就是我从 Controller 调用 POST 的方式:
  var newPhone = {name:'New Phone'};
$http.post('/forecasts/types.json', newPhone);

这就是我在控制台中看到的响应:
{"name":"New Phone"}  app.js:167

Uncaught TypeError: Cannot read property '2' of undefined angular-mocks.js:876
(anonymous function) angular-mocks.js:876
completeOutstandingRequest angular.js:2930
(anonymous function) angular.js:3209

我的代码看起来与文档几乎相同。该函数在发布时被调用,但我不知道为什么它不会运行。

编辑(感谢 Josh David Miller 对 fiddle 的评论)这是一个重现错误的 fiddle : http://jsfiddle.net/elcabo/btbds/3/
fiddle 基于 Angular 文档 (http://docs.angularjs.org/api/ngMockE2E.$httpBackend) 和 mockE2E $httpBackend 的 Angular fiddle (http://jsfiddle.net/vojtajina/DQHdk/)

有没有人以前遇到过这个问题,或者对如何解决这个问题有任何想法?

我已经广泛搜索了解决方案/相关帖子,但找不到任何内容,因此将不胜感激。

非常感谢。

最佳答案

我更新了你的 jsFiddle,现在可以使用了:http://jsfiddle.net/joshdmiller/EgMpe/ .

首先,AngularJS 的版本非常旧。我将它从 0.10.6 更新到 1.0.3。伴随这种变化而来的是许多句法变化,你可以在 fiddle 中找到。

但是您遇到的问题是没有在您的 $httpBackend.whenPOST 中返回值。方法。 respond方法应返回一个指示状态、响应正文和 header 的值。我在工作 fiddle 中包含的详细示例是:

$httpBackend.whenPOST('/phones').respond(function(method, url, data, headers){
console.log('Received these data:', method, url, data, headers);
phones.push(angular.fromJson(data));
return [200, {}, {}];
});

返回的数组是 200 的响应状态,一个空的响应主体和一组空的 header (即使用默认值)。

我还添加了一个 whenGET所以你可以看到他们一起工作:

$httpBackend.whenGET('/phones').respond(function(method,url,data) {
console.log("Getting phones");
return [200, phones, {}];
});

关于AngularJS 假 $httpBackend.whenPOST() 未捕获类型错误 : Cannot read property '2' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com