2013-02-12 13 views
5

İlk önce yerel IndexedDB deposundan veri yüklemesi gereken bir Dart + Web UI uygulamasına sahibim. IndexedDB API'sı senkronize değildir, bu yüzden verilerim yüklendiğinde bir geri arama alacağım. Veritabanım ilk açılana ve kullanıma hazır olana kadar hiçbir UI öğesini görüntülemek istemiyorum.UI'mı yalnızca uygulamam başlatıldıktan sonra nasıl görüntülerim?

Kullanıcı arabirimimi görüntülemeden önce veritabanı başlatmamı nasıl bekleyebilirim?

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

Sonra Projemde Web UI yol yapıyorum

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

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

cevap

5

senin geleceğin sonra() geri arama göstermek:

3

visibility:hidden ile body etiketi Hide

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

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

Bu, ayrıca bir ek bonus içeriyor: ayrı kod/web bileşenleri ayrıca db bağlantısı, vs.'ye güvenmeden önce uygulama durumunu kontrol edebilir.

+1

Bu, her zaman önemli değildir, ancak görünürlüğü kullanmanın (bu yanıt) kullanımı ve kullanımı arasında ince bir fark vardır. bir şablon-eğer (Kai'in cevabı) eğer şablonun içindeki herhangi bir şey eğer durum yanlışsa değerlendirilmezse, yani eğer varsa:

've'