上でコメントしたように、ページのレンダリング中、データのロード中などにスピナーを表示できます。例として、ビューがレンダリングされるまでスピナーを表示する Mixin を以下に示します。
App.ShowSpinnerWhileRendering = Ember.Mixin.create({
layout: Ember.Handlebars.compile('<div class="loading">{{ yield }}</div>'),
classNameBindings: ['isLoaded'],
didInsertElement: function() {
this.set('isLoaded', true);
this._super();
}
});
データがロードされるのを待ちたい場合 (ビューを表示するためにルーターを使用すると仮定):
App.ShowSpinnerWhileRendering = Ember.Mixin.create({
layout: Ember.Handlebars.compile('<div class="loading">{{ yield }}</div>'),
classNameBindings: ['isLoaded'],
isLoaded: function() {
return this.get('isInserted') && this.get('controller.isLoaded');
}.property('isInserted', 'controller.isLoaded'),
didInsertElement: function() {
this.set('inserted', true);
this._super();
}
});
そしてそれをあなたのビューに混ぜてください:
App.ApplicationView = Ember.View.extend(App.ShowSpinnerWhileRendering, {
// ...
});
次に、いくつかの CSS ルールを定義して、クラスを持つ要素にローディング スピナー (または何か) を表示し、クラスshowSpinner
も持つ場合は非表示にします。isLoaded
.loading{
background-image: url("spinner.png")
background-color: #DFDFDF
}
.is-loaded .loading {
/* back to default styling, e.g. */
background-image: none
background-color: white
}