2014-07-26 5 views
3

Polymer 및 Dart를 사용하여 점 좌표 목록을 생성하고 있습니다. 그것은 HTML로 포인트 목록을 렌더링합니다. 그럼에도 불구하고 자바 스크립트 함수를 사용하여 한 좌표계에서 다른 좌표계로 점을 변환하려고합니다. HTML 다트 폴리머에서Javascript 함수를 통해 Polymer 데이터 바인딩 전달

:

<template repeat="{{ p in grid_points }}"> 
    <core-item>{{ p }}</core-item> 
</template> 

내가 도서관에서 발견 된 자바 스크립트 :

grid_to_geodetic(x, y); 

grid_points이 포인트의 목록입니다. js 함수를 통해 p.x와 p.y를 전달하고 HTML 템플릿에서 p 대신 렌더링 된 결과를 얻으려면 어떻게해야합니까? 당신은 그것을 위해 expression filter을 사용할 수

답변

4

:

필터는 하나 개의 값을 받아 별도로 당신이 지점의 어느 부분을 나타 내기 위해 상수 매개 변수를 사용할 필요가 x와 y를 변환해야하는 경우, 하나를 반환
<template repeat="{{ p in grid_points }}"> 
    <core-item>{{ p | grid_to_geodetic }}</core-item> 
</template> 
... 
<script> 
    Polymer('your-element', { 
    grid_to_geodetic: function(point){ 
     return point.x + point.y; 
    } 
    }); 
</script> 

당신 내가 관리 않았다

<template repeat="{{ p in grid_points }}"> 
    <core-item>{{ p | grid_to_geodetic(1) }}</core-item> 
    <core-item>{{ p | grid_to_geodetic(2) }}</core-item> 
</template> 
... 
<script> 
    Polymer('your-element', { 
    grid_to_geodetic: function(point, part){ 
     if(part == 1) return point.x; 
     else return point.y; 
    } 
    }); 
</script> 
+0

'핵심 요소'를 '사용자 요소'에 넣는 것을 의미한다고 가정합니다. 어떤 경우 내가 당신이 말한 무엇을 시도했지만 오류 얻을 수있다 : \t \t 폴리머 ('핵심 항목', { \t \t \t rt90_to_wgs84 : 기능 (점) { \t \t \t \t 반환 point.x을 + point.y; \t \t \t} \t \t}); 예외 : 표현식 '(p | rt90_to_wgs84)'을 (를) 평가하는 중 오류가 발생했습니다. 클래스 'TrainList'에 인스턴스 getter 'rt90_to_wgs84'가 없습니다. NoSuchMethodError : 방법을 찾을 수 없습니다 'rt90_to_wgs84' 수신기 : 'TrainList' 인수의 인스턴스 : 그것은 어떤 결국 수하는 새로운 자바 스크립트 함수를 만드는 것이 아니라, 다트 클래스를 사용하려고 시도하는 것처럼 [] 그것은이다 call grid_to_geodetic() – alex

+0

아니, 나는 "당신의 요소"를 의미했다. 템플릿이 사용자 정의 구성 요소의 일부라고 가정합니다. 순수 폴리머로 작성된 사용자 정의 구성 요소에서 작동하는 방식, Dart를 직접 사용하지 않으므로 미안합니다. 흠, 당신은 실제로 일반 JS 함수를 사용하고 Polumer ('your-element'... stuff)를 건너 뛸 수 있습니다. – ain

+0

예, JS 함수를 필터 표현식에 사용하지 않으려 고 시도했습니다.다트 메서드에 대한 참조는 다음과 같이 인쇄합니다. {{p | rt90_to_wgs84}} rt90_to_wgs84 (p) { print (p.toString()); } 하지만 JS를 호출 할 수 없습니다. JsFunction과 JsObject를 살펴 보려고했지만 그냥 이해할 수는 없습니다. 이 함수는 JS 파일의 단순한 전역 함수입니다. JsFunction.withThis()가 무엇인지, JsObject.callMethod가 무엇인지 모르겠습니다. 나는 그 전역적인 기능만을 가진 대상이나 방법이 없다. – alex

0

같은 변환 할 일이 아인에서 몇 가지 아이디어에에게 감사를 호출 할 :

을 이렇게 표현 여과 및 분리로 당신이 필터에서와 동일한 이름의 함수를 추가 다트 뒷면 클래스에 다음

<template repeat="{{ p in start_points }}"> 
    <core-item>{{ p | rt90_to_wgs84 }}</core-item> 
</template> 

당신은 context.callMethod('funcion_name', [args_list]);와 글로벌 JS 함수를 호출 : 어 당신은 다트 함수를 호출하는 템플릿을 말하고있다

rt90_to_wgs84(p) { 
    return context.callMethod('grid_to_geodetic', [p.x, p.y]); 
}