2013-01-04 4 views
0

다음과 같이 나는지도를 인코딩하기위한 여러 곳에서 볼 수있는 예입니다 버전 0.2.9_r 16323) 위의 예에서 다트 M2의 경우 data.getKeys()이 변경된 data.keys()으로 변경되었습니다.다트에 encodeURIComponent Map.keys는()

예외 : NoSuchMethodError : 방법은 찾을 수 없습니다

    : '통화' "

을 나는이 개 질문이 편집기에서 실행하는 경우

그러나, 오류가 발생합니다

  • 위의 코드가 표시된 변경 사항 (Map.keys())과 함께 M2에서 여전히 작동해야하는지 궁금합니다.
  • if if wondering if 이 코드는 다음과 다른 점이 있습니다. JSON.stringify (data);
  • 다른 모든 의견을 환영합니다.

    TIA.

    답변

    0

    두 변경해야 할 일 :

    • import 구문이 변경되었습니다.
    • getKeys() 메서드는 keys이라는 게터가되었습니다.

    작업 버전 :

    import 'dart:uri'; 
    
    String encodeMap(Map data) { 
        return Strings.join(data.keys.map((k) { 
         return "${encodeUriComponent(k)}=${encodeUriComponent(data[k])}"; 
        }), "&"); 
    } 
    

    encodeMap에 의해 생성 된 String 당신이 우는 소리 코드에서 볼 수 있듯이 JSON.stringify에 의해 생성 된 것과 매우 다르다 :

    main() { 
        final map = {"a":"b", "c":"d"}; 
        assert(encodeMap(map) == "a=b&c=d"); 
        assert(JSON.stringify(map) == '{"a":"b","c":"d"}'); 
    } 
    
    +0

    많은 감사에 대한 너의 답. 그것은 두 가지 질문에 모두 답했습니다. map()은 keys()보다는 keys.map()으로 바뀌었다. encodeMap()에있는 솔루션의 구문은 적어도 내게는 다소 이상합니다. 이것을 처리하기 위해 JSON.stringify()와 비슷한 기능을 갖는 것이 합리적이지 않습니까? 많은 시간을 들여서 저에게 어떤 것을 해결하려고 시도했기 때문에 많은 문제가있었습니다. Dart가 절대적으로 훌륭하다고 생각하는만큼 jquery는 예를 들어 더 우아하게 처리합니다. $ .ajax(). 나는 Dart가 (아직) 비슷한 것을 가지고 있지 않다고 추정한다. –

    관련 문제