Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Memuatkan Pelbagai Model Tidak Berkaitan dalam Satu Laluan EmberJS?

Bagaimana untuk Memuatkan Pelbagai Model Tidak Berkaitan dalam Satu Laluan EmberJS?

Barbara Streisand
Barbara Streisandasal
2024-10-28 12:59:02136semak imbas

How to Load Multiple Unrelated Models in a Single EmberJS Route?

EmberJS: Memuatkan Berbilang Model Tidak Berkait dalam Satu Laluan

Apabila membina aplikasi EmberJS, seseorang mungkin menghadapi keperluan untuk memuatkan berbilang model data yang tidak berkaitan ke dalam satu laluan . Soalan ini menyelidiki pendekatan yang sesuai untuk tugasan tersebut.

Pertimbangan

Sebelum memulakan proses pemuatan, adalah penting untuk menentukan sama ada mengembalikan berbilang model dalam cangkuk model adalah wajar. Senario di mana pendekatan ini sangat tidak digalakkan ialah apabila laluan memuatkan data dinamik berdasarkan slug URL (cth., this.resource('foo', {path: ':id'})). Jika anda cuba memuatkan berbilang model di bawah keadaan sedemikian, kemungkinan isu timbul apabila memaut ke laluan. Ember akan memintas cangkuk model dan menggunakan model yang dibekalkan semasa pemautan, mengakibatkan tingkah laku yang tidak konsisten kerana anda menjangkakan mendapatkan berbilang model tetapi hanya menerima satu.

Alternatif kepada Pemuatan Cangkuk Model

Apabila memuatkan berbilang model dalam laluan yang pendekatan cangkuk model tidak sesuai, pertimbangkan alternatif berikut:

Dalam setupController/afterModel Hook: Muatkan model tambahan dalam setupController atau afterModel cangkuk. Pendekatan ini membolehkan anda menyambungkan keputusan kepada pengawal anda secara manual jika perlu. Walau bagaimanapun, ambil perhatian bahawa untuk ini berfungsi, anda mesti mengembalikan janji daripada cangkuk afterModel apabila ia perlu menyekat peralihan seperti yang dilakukan oleh cangkuk model.

App.IndexRoute = Ember.Route.extend({
  model: function(params) {
    return $.getJSON('/books/' + params.id);
  },
  setupController: function(controller, model) {
    // Load additional model and set it on the controller
    controller.set('model2', { bird: 'is the word' });
  }
});

Dalam Cangkuk Model Laluan: Jika berbilang model yang tidak berkaitan perlu dimuatkan dan laluan tidak memuatkan data dinamik, cangkuk model boleh digunakan.

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return {
      model1: ['red', 'yellow', 'blue'],
      model2: ['green', 'purple', 'white']
    };
  }
});

Menggunakan Janji: Apabila memuatkan model melibatkan permintaan tak segerak ( cth., panggilan pelayan), menggunakan janji untuk menyelesaikan operasi ini dan mengembalikan model yang terhasil dalam cangkuk model.

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return Ember.RSVP.hash({
      model1: promise1,
      model2: promise2
    });
  }
});

Atas ialah kandungan terperinci Bagaimana untuk Memuatkan Pelbagai Model Tidak Berkaitan dalam Satu Laluan EmberJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn