Iron Response 调用 Js Object Impl 对象,但我找不到 class 文档

IronResponse calls an JsObjectImpl object, but I cant find class docs on it

我试图解析 IronAjax 成功处理程序的 return 并将响应设置为 Map 实例。好像不是这样的。

我的 HTML 标记是:

<iron-ajax id="myAjaxId" auto
  url="http://localhost:12345/test_server/v1/daily"
  handle-as="json"
  on-response="handleResponse" on-error="handleError"></iron-ajax>

我的 Dart 代码是:

void handleResponse(CustomEventWrapper cew, IronRequest ir){
  print("inside handleResponse");
  var data =  ir.response;       // <-- is type JsObjectImpl
  print("data");
  print(data);
  if (data == null) return;

  print ("About to set rows");
  List<Map> rows = data.containsKey("data") ? data["data"] : [];

  print("Variables are Set locally");

  $['myDatagrid'].render();
}

@reflectable
String camelToFormal (String input){
  String out;

  RegExp regex = new RegExp("([A-Z])");
  out = input[0].toUpperCase() + input.substring(1).replaceAllMapped(regex, (Match m) => " ${m[1]}");
  return out;
}
@reflectable
void handleError(CustomEventWrapper cew, IronRequest ir){
  print("____Error:____");
  print(ir.response);
}

我得到的错误是:

type 'JsObjectImpl' is not a subtype of type 'Map' of 'other'.

我不确定是否需要 运行 转换它,即使 IronAjax 设置的 return 类型是 json

因此,由于 ir.response 将被设置或为空,我首先检查它是否为空。 responseHandler 当前设置的 var data 行是,但我也尝试做类似的事情:Map data = new Map.from(ir.response); 也失败了。

尽管据说这是作为 JSON 处理的,并且 returning 一个 jslint 确认反对,但将其转换为适当的地图实例似乎存在问题。

根据 Polymer IronRequest 在:https://elements.polymer-project.org/elements/iron-ajax?active=iron-request 它说responseis *,解析的响应主体。我是否弄错了这是如何正确设置的,还是我遗漏了什么?

您可以在 属性 上尝试使用 Object 而不是 map,然后使用 convertToDart。不确定这会生成地图,但我想值得一试。另见