将未保存的记录传递给Ember.js路线

时间:2016-01-13 09:35:50

标签: javascript ember.js ember-data

在应用程序内部,我们允许用户创建与现有记录相关的新记录。为此,我们使用类似这样的动作:

createUser() {
  var route = this;

  var model = this.store.createRecord('user', {
    client: route.modelFor('client'),
  });

  route.transitionTo('user.update', model);
 },

user.update路由使用在转换中传递的模型呈现user-form组件。相同的路由也用于更新现有用户。

这种方法的问题如下:刷新页面时,页面错误,因为在查询商店时路径无法找到相应的记录(此时,URL为/users/null/update)。理想情况下,我会在URL中传递client(或client.id)参数,以便:

  1. 可以毫无问题地重新加载页面。
  2. 正确设置与用户关联的客户端。
  3. 我如何在Ember.js中实现这一目标?我知道这可以使用嵌套路由(通过在客户端路由中嵌套user.update路由)轻松完成,但这在视觉上没有意义。

    路由器的相关部分如下:

    this.route('clients');
    this.route('client', {path: 'clients/:id'}, function() {
      this.route('users');
    });
    
    this.route('user', {path: 'users/:id'}, function() {
      this.route('update');
    });
    

    我在user / update.hbs模板中所做的只是{{user-form user=model}}

1 个答案:

答案 0 :(得分:0)

问题是你刚创建的模型在那时没有id,因为它没有保存,ember无法路由到没有id的模型,如果可能的话,在尝试转换到路径之前保存模型,如果您不想保存模型,因为用户可以取消操作,请检查用户遇到相同问题的此线程(如果我理解您的问题正确),我提供了一个解决方案,我在我的问题中使用自己的项目

https://stackoverflow.com/a/33107273/2214998