Bagaimana cara beralih ke rute gaya umum 404?

Saya memiliki subdomain yang mencari di dalam rute indeks saya. Itu mencari rencana untuk slug subdomain dan mengalihkan ke halaman rencana. Jika tidak ada rencana yang kembali, maka perlu merender halaman 404. Berikut adalah kode untuk pengalihannya. Memang saya baru mengenal ember, tetapi kode ini sepertinya benar. Saya tidak mendapatkan kesalahan apa pun di konsol dan itu hanya menuju ke rute yang saya coba alihkan:

pengontrol/index.js

model: function() {
    var self = this;

    if ( this.isHomePage() ) {

      return Ember.Object.create();

    } else {

      // Get resources
      var parts = window.location.hostname.split('.');
      var subdomain = parts[0];

      return this.store.find('plan', { plan_subdomain: subdomain }).then(function(plans) {
        var returnedPlan = plans.get('firstObject');
        if (Ember.isEmpty(returnedPlan)){
          debugger;
          return self.transitionTo('fourOhFour');
        } else {
          return returnedPlan;
        }
      });

    }
  },

router.js

  this.route("fourOhFour", { path: "*path"});

person Robbie Guilfoyle    schedule 10.01.2015    source sumber
comment
dan itu isi returnedPlan?   -  person Asgaroth    schedule 10.01.2015
comment
ia perlu mengembalikan objek rencana ke fungsi model jika ada, (.isEmpty?), jika tidak, arahkan ke 404.   -  person Robbie Guilfoyle    schedule 10.01.2015
comment
maaf saya salah bertanya, jadi self.transitionTo('fourOhFour'); dijalankan dan tidak berfungsi? itulah yang saya pahami   -  person Asgaroth    schedule 10.01.2015
comment
hanya untuk memastikan, Anda benar-benar mencapai pernyataan debugger, bukan? Dan bisakah Anda menyertakan routernya, dan memberi tahu kami rute apa yang sedang kami lihat?   -  person Kingpin2k    schedule 10.01.2015
comment
itu memang mengenai debugger, file telah diperbarui.   -  person Robbie Guilfoyle    schedule 10.01.2015


Jawaban (1)


Anda menentukan jalur 404 Anda sebagai jalur umum

this.route("fourOhFour", { path: "*path"});

yang masuk akal, tapi kemudian Anda menyuruh Ember untuk beralih ke rute wildcard itu, tapi apa URL-nya? /*?

Anda perlu memberi tahu Ember jalur apa yang seharusnya dengan menentukan parameter kedua ke transitionTo()

Lihat di sini untuk contohnya

Saya menjawab pertanyaan serupa di sini

person Kalman    schedule 11.01.2015
comment
Kalman, ini bekerja dengan baik. Terima kasih! Sebagai catatan, saya merasa paling mudah untuk memasukkan string kosong: self.transitionTo('fourOhfour',''); - person Robbie Guilfoyle; 12.01.2015