2014-09-12 70 views
0

我想创建一个新的记录,它应该属于现有的记录。带有链接到Ember的新记录?

所以我的想法是使用link-to帮手,并将它传递给现有记录,并在相应的路线中创建一个新记录。

{{#link-to "create" this}}create record{{/link-to}} 

... 

App.CreateRoute = Ember.Route.extend({ 
    model: function (existing) { 
     return this.store.createRecord('mymodel', { 
      some : '', 
      data : '', 
      existing: existing 
     }); 
    }, 

    deactivate: function() { 
     this.currentModel.rollback(); 
    } 
}); 

的问题是,当我尝试绑定的新记录到创建表格模板的属性,我得到的现有记录的数据,而不是新创建的一个。

回答

2

查看路径中model钩子的文档。您遇到的问题是model挂钩在您转换为使用link-to的路由时不会被调用。因为您已经将模型作为link-to的第二个参数,所以不需要运行。

作为一个方面说明,你不应该操纵路由中的数据,这是控制器。路线应该只是设置你的控制器和模板。

的我是如何处理这种模式

例子:

App.CreateRoute = Ember.Route.extend({ 
    model: function() { 
     return getExisting(); 
    } 
}); 

App.CreateController = Ember.ObjectController.extend({ 
    some: '', 
    data: '', 
    actions: { 
     createRecord: function() { 
      this.store.createRecord('type', { 
       some: this.get('some'), 
       data: this.get('data') 
      }).save(); 
     } 
    } 
}); 
+0

哦......我看到了一个教程,他们呼吁在路线创造纪录......所以如何解决呢?我尝试使用正常的链接,但我不能简单地使用现有记录的id,因为handlebars在任何地方创建了这些metamorph-script-tags ... – 2014-09-12 18:27:24

+1

我想你可以这样做,但我更喜欢使用'现有'作为路线的模型,然后在控制器中创建新记录。等到用户提供了所有必需的信息后,_then_创建新记录。我会用一个例子更新我的文章。 – GJK 2014-09-12 18:30:07

+0

啊我先试了一下,但是我无法得到表单数据,因为它绑定到了现有的记录。 – 2014-09-12 18:32:44