2014-11-03 3 views
2

템플릿이있는 HTML과 바인딩 된 템플릿을 변경하는 기능이 있습니다. 기능은 다음과 같습니다다트 : 템플릿이 끝날 때까지 기다리십시오.

void onHover(Event e, var detail, Node sender) { 
    this.querySelector('#tempToBind').setAttribute("ref", "Btn2"); 

    this.querySelector('#Btn2').onMouseLeave.listen((e) { 
    this.querySelector('#tempToBind').setAttribute("ref", "Btn1"); 
} 

마우스가 인 btn1를 입력하고 마우스 Btn2 잎 경우, 인 btn1가 다시 표시해야 할 때 Btn2이 표시되어야한다. Btn2에 대한 쿼리가 항상 null이고 템플릿이로드가 완료되지 않았기 때문에 그 것으로 추측됩니다. 템플릿이로드 완료되면 콜백을받을 수있는 방법이 있습니까?

템플릿은 다음과 같이 :

<template> 
<!-- some content here --> 
    <template id="tempToBind" bind ref="Btn1"></template> 

<template> 

<template id="Btn1"> 
<div><button>1</button><div> 
</template> 
<template id="Btn2"> 
<div><button>2</button><div> 
</template> 
+0

코드 아래 텍스트는 '뭔가 빠진 것 같다 ... 난 Btn2를 쿼리하면 항상 ??? 그리고 나는 추측한다 ... ' –

+0

그것의 null. 나는 그것을 바로 잡는다 – Azael

+0

'ref'속성을 설정할 때 어떤 일이 일어나는지 또한 명확하지 않다. 단추를 표시하거나 숨기는 방법은 어떻게 구현됩니까? 템플릿 태그를 포함한 HTML을 추가 할 수 있습니까? –

답변

2

를 지금까지 내가 거기에 어떤 이벤트가 없지만 일반적으로해야 new Future(() => ...) 또는 scheduleMicrotask에 의해 실행을 지연 알고있다.

void onHover(Event e, var detail, Node sender) { 
    this.querySelector('#tempToBind').setAttribute("ref", "Btn2"); 
    scheduleMicrotask(() { 
    this.querySelector('#Btn2').onMouseLeave.listen((e) { 
    this.querySelector('#tempToBind').setAttribute("ref", "Btn1"); 
    }); 
} 


void onHover(Event e, var detail, Node sender) { 
    this.querySelector('#tempToBind').setAttribute("ref", "Btn2"); 
    new Future(() { 
    this.querySelector('#Btn2').onMouseLeave.listen((e) { 
    this.querySelector('#tempToBind').setAttribute("ref", "Btn1"); 
    }); 
} 
+0

는 scheduleMicrotask : 으로 시도했습니다. scheduleMicrotask (() => this.querySelector ('# tempToBind'). setAttribute ("ref", "Btn2")); setAttribute ("ref", "Btn1"); ' 아직 null이지만 im이 아님을 알리기 위해 this.querySelector ('# Btn2 ')와 onMouseLeave.listen ((e) { this.querySelector – Azael

+0

나는'scheduleMicrotask'에 대해 100 % 확신하지는 않지만'Future'를 사용하면 업데이트 된 답변에 표시된 것과 같이 작동합니다. –

+1

future가 scheduleMicrotask와 함께 작동합니다. new Future()는 실제로 템플릿이 해독 될 때까지 쿼리를 지연 시키는가? – Azael

관련 문제