2016-03-23 4 views
2

Я пытался проанализировать возвращение обработчика успеха IronAjax и установить ответ на экземпляр Map. Кажется, это не так.IronResponse вызывает объект JsObjectImpl, но я не могу найти документы класса на нем

Моего HTML Markup является:

<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, был json

Итак, поскольку ir.response будет либо установленным, либо нулевым, я проверю, является ли оно первым первым. строка var data в responseHandler в настоящее время устанавливает, но я также попытался сделать что-то вроде: Map data = new Map.from(ir.response);, который также не работает.

Несмотря на то, что это, как говорят, обрабатывается как JSON, и возвращает подтвержденный jslint аргумент, кажется, есть проблемы, чтобы преобразовать его в соответствующий экземпляр карты.

Согласно Polymer IronRequest по адресу: https://elements.polymer-project.org/elements/iron-ajax?active=iron-request в нем говорится, что responseis *, обработанное тело реакции. Я ошибаюсь, как это правильно настроено, или я чего-то не хватает?

+0

Вы можете попробовать «объект» вместо карты на свойстве, а затем использовать «convertToDart». Не уверен, что это приводит к «карте», но стоит попробовать, я думаю. См. Также http://stackoverflow.com/questions/33448961/polymer-1-0-iron-list-selection –

+0

Что делает: convertToDart do? im пытается найти документы на нем – Fallenreaper

+0

Я не знаю о документах. Я думаю, что это должна быть деталь реализации, которая протекает иногда. Это, вероятно, нуждается в исправлении в Dart IronAjax. –

ответ

2

Вы можете попробовать объект вместо карты на объекте, а затем использовать convertToDart. Не уверен, что это приводит к созданию карты, но стоит попробовать, я думаю. См. Также Polymer 1.0 - iron-list - selection

+0

JsObjectImpl означает, что у вас есть обертка вокруг объекта JavaScript. JS на самом деле не имеет Maps, у него просто есть объекты с ключами. Так что convertToDart дает карту Дарта. –