2013-02-12 2 views
5

저는 먼저 로컬 IndexedDB 저장소에서 데이터를로드해야하는 Dart + Web UI 앱이 있습니다. IndexedDB API는 비동기식이므로 데이터가로드 될 때 콜백을받습니다. 데이터베이스가 처음 열리고 준비가 될 때까지 UI 요소를 표시하고 싶지 않습니다.앱을 초기화 한 후에 만 ​​UI를 표시하려면 어떻게해야합니까?

UI를 표시하기 전에 데이터베이스 초기화를 기다리는 방법은 무엇입니까?

<body style="visibility:hidden"> 
    <!-- content --> 
</body> 

그리고 나는 내 프로젝트에서 웹 UI의 방법으로 그 일을하고

window.indexedDB.open(dbName, 
    version: version, 
    onUpgradeNeeded: createObjectStore).then(handleDBOpened); 

handleDBOpened(..) { 
    query('body').style.visibility = "visible"; // <-- show the body tag 
} 

답변

5

당신의 미래의 다음() 콜백을 보여줍니다 :

3

visibility:hidden으로 body 태그를 숨기기

... 
<body> 
    <template if="showApplication"> 
    <span>The app is ready.</span> 
    </template> 
</body> 
... 
@observable bool showApplication = false; 

main() { 
    // Initialize... 
    window.indexedDB.open(...).then((_) { 
    showApplication = true; 
    }); 
} 

별도의 코드/웹 구성 요소는 db 연결에 의존하기 전에 앱 상태를 확인할 수도 있습니다.

+1

이것은 항상 중요하지 않지만 가시성 사용 (이 답변)과 template-if (Kai의 답)은 template 내부의 모든 것 - 조건이 거짓 일 때 평가되지 않으면, '

'vs'