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

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

Barbara Streisand
Lepaskan: 2024-10-28 12:59:02
asal
225 orang telah melayarinya

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' });
  }
});
Salin selepas log masuk

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']
    };
  }
});
Salin selepas log masuk

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
    });
  }
});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan