【问题标题】:How to work with nested routes in Ember.js如何在 Ember.js 中使用嵌套路由
【发布时间】:2015-10-25 14:16:54
【问题描述】:

我是 Ember.js 的新手,我坚持使用嵌套路由,我需要帮助。

这就是我想要实现的目标:

我认为这被称为 Master-Detail 页面。

更系统地看起来像这样:

UsersIndexRoute 显示人员列表。 UsersShowRoute 显示特定人员的信息。

这是我的路线:

Router.map(function() {
  this.route('users', { path: '/users'}, function() {
    this.route('index', { path: ''}, function() {
      this.route('show', { path: '/:id' });
    });
  });
});

UserIndex 模板如下所示:

{{#each item in model}}
  {{#link-to 'users.index.show' item.id}} {{item.firstName}} {{item.lastName}}{{/link-to}}
{{/each}}

例如,当我尝试像“http://localhost:4200/users/1”这样的 URL 时,根据调试器,我能够访问控制器“users.index.show”(所需的)

UserShowRoute 的路线如下所示:

export default Ember.Route.extend({
  renderTemplate: function() {
    this.render({
      outlet: 'detail'
    });
  },
  model: function(params) {
    return this.store.find('user', params.id);
  } 
});

我使用的是 ember-cli 1.13.8

我希望我的解释对你有意义。 提前致谢。

【问题讨论】:

  • 我找不到问题。您提供的代码看起来不错。如果它不起作用,您可以发布堆栈跟踪
  • @kristjanreinhold 但是,我没有收到任何错误
  • @kristjanreinhold 当我将 ENV.APP.LOG_TRANSITION 设置为 true 时,它​​显示“已转换为 'users.index.show'
  • @kristjanreinhold 我在 UsersShowRoute 的模型挂钩中添加了“console.log”,并打印到控制台。看起来模板渲染有问题。
  • @kristjanreinhold 我在github上做了repo,以防我没有提供足够的信息github.com/SuperManEver/nested_routes

标签: ember.js ember-cli


【解决方案1】:

好的,我已经更新了您的代码。主要是路由本身的逻辑。每个循环也以不推荐的方式使用。

router.js

this.resource('users', function() {
  this.route('index');
  this.route('view', { path: 'view/:id' });
});

路由/用户/索引

export default Ember.Route.extend({
    model: function() {
        return this.store.find('user');
    } 
});

模板/用户/索引

{{#each model as |item|}}
   {{#link-to 'users.view' item.id}} 
       {{item.firstName}} {{item.lastName}}
   {{/link-to}}
{{/each}}

routes/users/view.js

export default Ember.Route.extend({

  model: function(params) {
    return Ember.RSVP.hash ({
      person: this.store.find('user', params.id);
    })
  } 
});

模板/用户/view.hbs

{{model.person.firstName}}

  ---- content --- 

【讨论】:

  • 我试过你给我的,结果我得到了UnrecognizedURLError: /users
  • @NikitaLuparev 错误是在哪条路线上抛出的?
  • @我犯了一个错误,我使用了旧的 URL,现在我到达了视图的 URL http://localhost:4200/users/view/2。调试器显示当前路由为users.view,但页面仍为空
  • @NikitaLuparev 。将这行代码添加到详细视图路由.... afterModel: function(model, transition) { } 并添加一个调试器。
  • 返回的模型是什么+
猜你喜欢
  • 1970-01-01
  • 2013-01-16
  • 2012-11-18
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2015-03-18
  • 2013-11-04
  • 1970-01-01
相关资源
最近更新 更多