2014-07-10 4 views
1

Dart에서 처음으로 "복잡한"응용 프로그램을 개발하고 있는데, 하나 이상의보기로 작업하는 방법에 문제가 있습니다 (응용 프로그램을 개발하여 단일 페이지).다트 언어 : Polymer -보기 작업

우선,이 (Polymer 사용)은 응용 프로그램의 다양한보기 (또는 "응용 프로그램 화면")를 사용하는 올바른 방법이라고 가정합니다. 그러나, 그렇지 않다면 나는 (물론) 알고 싶습니다. 그리고 "앱 화면"에 의해, 나는 자바로 다양한 형태를 만드는 것과 같은 것을 말하고있다.

예를 들어 페이지 맨 위에 두 개의 버튼이 있습니다. 첫 번째를 클릭하면 사용자 등록 영역이있는보기가 표시됩니다. 두 번째 단추를 클릭하면 편집 가능한 눈금이있는보기가 표시됩니다.

이 간단한 응용 프로그램에 대한 몇 가지 코드 예제를 제공해 주시겠습니까?

답변

1

당신은 template if 기능을 사용할 수 있습니다.
현재 활성 상태가 아닌보기는 DOM에서 자동으로 제거되고 모델 속성이 변경되면 자동으로 다시 삽입됩니다.

<polymer-element name='app-element'> 
    <template> 
    <template if='{{appModel.view == 'view1'}}'> 
     <view1></view1> 
    </template> 

    <template if='{{appModel.view == 'view2'}}'> 
     <view2></view2> 
    </template> 
    </template> 
    <script ...> 
</polymer-element> 
+0

고마워, 구터. 따라서 내 응용 프로그램 페이지에서 모든 Polymer 요소를 가져 와서 검사를 실행합니다.그러나 이것은 어떤 식 으로든 성능에 영향을 미치지 않습니까 아니면 활성 폴리머 만 실제로 사용자 브라우저에로드되고 리소스를 사용합니까? – Felipe

+0

이것은 중요한 부분이었습니다. 현재 Dart 브라우저 앱의 모든 소스 코드는 URL을 입력 할 때 즉시로드되지만 if-expression이 true로 평가되는 템플릿 내의 요소 만 DOM에 추가되고 나중에 false로 평가되면 제거됩니다. 지연 로딩 상태가 정확히 무엇인지 모르겠습니다. 여러 부분이 이미 착륙했지만 실제로 작동하는지 이미 알 수 없습니다. 하지만 그렇게되면 앱이 실제로 필요한 부분 만로드되고 다른 부분은 호출 될 때 서버에서 가져옵니다. –

2

네이티브 요소와 마찬가지로 폴리머 요소에 CSS 스타일 속성을 사용할 수 있습니다.

당신은 다음과 같이 조회 할 수 있습니다를 표시/숨기기 다음

Element e = querySelector('my-form'); 

과 : 후

e.style.display = 'none'; 
e.style.display = 'block'; 

당신이 초기화 폴리머, 당신은 (존재하는 경우) 요소의 클래스를 사용할 수 있습니다 (!) :

그런 다음 필요에 따라 클래스 속성을 설정하거나 스타일 속성을 사용할 수 있습니다. e 클래스는 HtmlElement에서 상속합니다.

클래스를 사용할 수도 있습니다. 다트는 약간의 "전환"기능과 함께 제공 :

element.classes.toggle('hidden'); 
element.classes.toggle('shown'); 

안부, 로버트

+0

다른 접근법이 있습니다. 예를 들어, 요소가 보이지 않거나 보이지 않을 때에도 요소를 사용하도록할지 여부에 따라 다릅니다. 나는'hidden' 애트리뷰트를 설정하는 것이 위의 그림과 같이 그것을 (더 이상의 CSS없이) 숨기고,'visibility' 스타일 ('hidden','visible') 또는'display' 스타일 애트리뷰트라고 생각합니다. '투명도 '스타일을 사용하여 투명하게 만들 수도 있습니다 (이 방법은 여전히 ​​페이지의 공간을 사용하지만 보이지 않습니다). –

+0

그건 맞지만 결국에는 속성/스타일을 변경하는 것입니다. – Robert

+0

당신의 대답은 다음과 같습니다. 맞아, 나는 이것을 달성하기위한 다른 접근법이 있다는 것을 지적하는 것이 상처라고 생각했다. D –