Ember.js 如何在错误操作余烬中呈现未找到的模板

Ember.js 如何在错误操作余烬中呈现未找到的模板,ember.js,Ember.js,我试图呈现404模板(不是转换),如果我从后端得到的记录没有找到。 我得到了错误 您将控制器:'admin.categories.show'传递到render方法中,但找不到这样的控制器 import Ember from 'ember'; export default Ember.Route.extend({ model(params) { return this.store.find('category', params.slug); }, serialize (mo

我试图呈现404模板(不是转换),如果我从后端得到的记录没有找到。 我得到了错误

您将控制器:'admin.categories.show'传递到
render
方法中,但找不到这样的控制器

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return this.store.find('category', params.slug);
  },

  serialize (model) {
    return {
      slug: model.get('slug')
    };
  },

  actions: {
    error: function (error, transition) {
      console.log('error', error, transition);
      this.render('not-found');
    }
  }
  this.render('not-found', {
    into: 'application',
    outlet: 'main',
    controller: 'application'
  });
}))

当我试着用控制器把它传给它时,它说

您将
controller:'application'
传递到
render
方法中,但找不到这样的控制器

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return this.store.find('category', params.slug);
  },

  serialize (model) {
    return {
      slug: model.get('slug')
    };
  },

  actions: {
    error: function (error, transition) {
      console.log('error', error, transition);
      this.render('not-found');
    }
  }
  this.render('not-found', {
    into: 'application',
    outlet: 'main',
    controller: 'application'
  });

假设您使用的是Ember.js 2.4,那么您需要使用钩子,而不是尝试直接调用此.render()。您似乎也遵循了我的理解,即希望开发人员使用Transitiono(),因此创建适当的模板,并检查Ember.js是否在404上自动显示它。如果是这样的话,那么您可以根据error.status自定义模板以显示不同的错误,比如假设您使用的是Ember.js 2.4,那么您需要使用钩子,而不是试图直接调用这个.render()。您似乎也遵循了我理解为希望开发人员使用transitiono()的规则,因此,创建适当的模板,并检查Ember.js是否在404上自动显示该模板。如果有,则可以自定义模板,根据error.status显示不同的错误,如下所示