মূল কনটেন্টে যান
🐹
emberjs learning
গাইড•1 · Route Loading and Data Fetching

Use Loading Substates for Better UX

impact · CRITICALPerceived performance improvementplan · দিন ০৩৩
আগে নিজে — এই কোডে কী ভুল, ঠিকটা কেমন হবে?

Incorrect (no loading state):

// app/routes/posts.js
export default class PostsRoute extends Route {
  async model() {
    return this.store.request({ url: '/posts' });
  }
}
পুরো rule · Correct আর ব্যাখ্যা — আগে নিজে লিখুন, তারপর খুলুন

Implement loading substates to show immediate feedback while data loads, preventing blank screens and improving perceived performance.

Incorrect (no loading state):

// app/routes/posts.js
export default class PostsRoute extends Route {
  async model() {
    return this.store.request({ url: '/posts' });
  }
}

Correct (with loading substate):

// app/routes/posts-loading.gjs
import { LoadingSpinner } from './loading-spinner';

<template>
  <div class="loading-spinner" role="status" aria-live="polite">
    <span class="sr-only">Loading posts...</span>
    <LoadingSpinner />
  </div>
</template>
// app/routes/posts.js
export default class PostsRoute extends Route {
  model() {
    // Return promise directly - Ember will show posts-loading template
    return this.store.request({ url: '/posts' });
  }
}

Ember automatically renders {route-name}-loading route templates while the model promise resolves, providing better UX without extra code.