2013-09-17 2 views
2

Я в настоящее время вызываю функцию в JavaScript из дротика, которая принимает строку JSON и обратный вызов успеха.Как использовать прокси, возвращенные из javascript в dart

Обратный вызов из JavaScript должен возвращать ответ в виде строки JSON. Однако я не могу получить эту информацию из возвращаемого прокси в дротике. При отладке всего, что я могу видеть на прокси, есть _id, _port и hashCode.

Как мне получить необходимую информацию от прокси?

Фрагменты кода:

void init() 
{ 
    _mJSProxy= js.retain(new js.Proxy(js.context.Test));} 
} 

void testRequest(String p_request) 
{ 
    _mJSProxy.test(js.map(p_request), new js.Callback.once(onCallbackSuccess)); 
} 

void onCallbackSuccess(var response, var httpRequest) 
{ 
    // response & httpRequest is a Proxy 
    // How to get the required information from them? 
} 

ответ

2

Объект js.Proxy используется, когда возвращаемый тип не bool, num, String или html.Element. Когда возвращается js.Proxy, вы должны знать, что представляет собой структура на базовом объекте Js, чтобы использовать его. Например, если объект Js является XMLHttpRequest вы сможете использовать его как это:

js.Proxy p = // proxy on XMLHttpRequest 
String result = p.responseText; 
// '.responseText' is handled by noSuchMethod and the call is done on Js side 

В вашем случае, если response является Proxy, и вы хотите скопировать структуру Json в Дарта вы можете использовать:

import 'dart:convert'; 

String jsonValue = js.context.JSON.stringify(reponse); 
Map dartJson = JSON.decode(jsonValue); 

примечание стороны: вы должны использовать Map в качестве параметра для js.map(...). В вашем коде вы используете String.

 Смежные вопросы

  • Нет связанных вопросов^_^