如何访问控制器ember.js中的参数

jqjz2hbq  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(137)

这是我的router.js代码。

this.route('contact',{'path': '/contact/:chat_id'});

这是我的route.js代码。

model(params) {

  return this.store.findRecord("chat", params.chat_id)
},

这是我的controller.js代码,我可以这样使用吗?它显示错误为空值,请帮助我。如何在控制器中使用参数

recordChat: function() {

  var chat = this.get(params.chat_id)

  Ember.RSVP.hash({
    offer_id: chat,
  })
}
iyfjxgzm

iyfjxgzm1#

为2021年编辑:在Ember中可能有一种更简单的方法来实现这一点。
原始答案

我认为最简单的答案是在route中创建一个变量,然后在setupController中设置它:

您的路由.js

export default Ember.Route.extend({
  model(params) {
    this.set('myParam',params.my_Params);

    // Do Model Stuff...
  },
  setupController(controller, model) {
    // Call _super for default behavior
    this._super(controller, model);
    // Implement your custom setup after
    controller.set('myParam', this.get('myParam'));
  }
});
zc0qhyus

zc0qhyus2#

在route.js中,您需要像这样调用setupController函数:

setupController(controller, model) {
    this._super(...arguments);
    controller.set('chat', model);
}

现在,您可以通过调用以下命令在控制器中访问它:

recordChat() {
   const chat = this.get('chat');
   //  if you don't call the setupController function, you could also do:
   // const chat = this.get('model') or this.get('model.id') if you want the id only
}

更新日期:

请在此处查看工作twiddle

5jvtdoz2

5jvtdoz23#

我认为您可以从模型中获取所需的id,因为您使用了参数chat_id来查找记录,并且该id现在是chat对象的一部分(它是route模型本身)。
因此,在您的控制器中,您只需执行以下操作:这个.get('模型').id

相关问题