【问题标题】:Cannot see the Restangular response data set in my chrome developer tools... is it bc my JSON contains nested JSON?在我的 chrome 开发人员工具中看不到 Restangular 响应数据集...是不是我的 JSON 包含嵌套的 JSON?
【发布时间】:2013-06-25 06:52:44
【问题描述】:

我目前正在尝试建立一个基本的 RESTful 服务,该服务从 MongoLab 中提取我的 JSON 对象,而不是我在沙箱中工作的基于文件的实现。我的每个 JSON 对象都包含一个子数组(它们的前身 ID):

{title: 'xxyy1', course_id: '10004', semester_hours: 3, detail: 'coursename1', predecessors: ['10001']},
{title: 'xxyy2', course_id: '10005', semester_hours: 3, detail: 'coursename2', predecessors: ['10001','10003','10004']},
{title: 'xxyy3', course_id: '10006', semester_hours: 3, detail: 'coursename3', predecessors: ['10001','10003','10004']},
{title: 'xxyy4', course_id: '10007', semester_hours: 3, detail: 'coursename4', predecessors: ['10004','10006']}

这在将其串入 angularJS 时非常有效,只需将 course.title、course.course_id 等拉入 ng-repeat 即可。甚至前辈也很容易通过将其构建为直接 JSON 来进行管理。

<span class="predecessors">{{course.predecessors | json}}</span>

但是,当尝试使用 Restangular 作为我的资源提供者从 MongoLab 提取相同的数据集时,我无法在视图中看到任何响应的数据......实际上,我在任何地方都看不到任何数据。使用 Chrome 的开发工具,我看到的只有以下内容:

![静止角响应]:http://imgur.com/w8qE96K.jpg

我在这里遗漏了什么吗?我的 Mongo 实现如下:

  RestangularProvider.setRestangularFields({
    id: 'course_id'
  });


  RestangularProvider.setListTypeIsArray(false);

  RestangularProvider.setResponseExtractor(function(response, operation, what, url) {

    var newResponse;
    if (operation === "getList" && what === "availableCourses") {

        console.log(response);

        newResponse = response.data.title;
        newResponse.course_id = response.data.course_id;
        newResponse.semester_hours = response.data.semester_hours;
        newResponse.detail = response.data.detail;
        newResponse.predecessors = response.data.predecessors;
    } else {
        newResponse = response.data;
    }
    return newResponse;
  });

【问题讨论】:

    标签: angularjs mlab


    【解决方案1】:

    我是 Restangular 的创造者。

    因此,当您执行 getList 时,Restangular 期望得到一个数组作为响应。在您的情况下,当您获得一个列表并且路径是 availableCourses 时,您将返回一个具有属性的字符串(标题)。所以你正在创建一个带有属性的“特殊”字符串,它并不常见,也不与 Restangular 兼容。

    如果要获取所有可用课程的列表,则需要返回一个数组作为新响应。那么,当您执行 getList 时,服务器的确切响应是什么?如果您给我这个,我将能够帮助您更轻松地创建此响应提取器。

    还可以看看这个 MongoLab 示例 :),也许它会对你有所帮助。

    http://plnkr.co/edit/d6yDka?p=preview

    最好的!

    【讨论】:

    • 嗨,马丁,非常感谢您的回复!您在 StackOverflow 上的回复非常有帮助,并且为推动和采用这个框架做出了巨大贡献。我从服务器收到的响应只是我在原始帖子的 imgur 链接中显示的静态“响应”对象。我应该能够以另一种方式检查这个对象,还是进一步钻取并查看数据?或者,它是否因为无法提取数据集的内容而保留为基线“对象”?再次感谢!
    • 嘿,首先,我很高兴为您提供帮助 :)。我已经使用了一段时间了,它让我的生活更轻松,所以也许在 toerh 人身上更轻松是很棒的。从我在图片中看到的内容来看,您的回复实际上是空的。所以你从服务器得到一个空的响应。查看开发者控制台中的网络选项卡,查看请求的 URL 以及响应的确切内容。这将指导您了解正在发生的事情。无论如何,对于 getList,您的响应应该是一个数组,而您的不是
    • 嘿马丁,你完全正确的回应是空的。我遇到了来自 MongoLab 的响应的问题...一旦对象得到正确响应,我什至不需要构建自定义提取器即可在我的角度范围内引用嵌套的 JSON。你的图书馆是冠军。很好。 :)
    猜你喜欢
    • 2021-02-11
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2018-06-23
    相关资源
    最近更新 更多