Ember - 从路线中获取模型ID并发布到服务器

时间:2014-10-28 16:49:33

标签: javascript post ember.js ember-data

我正在为我的余烬应用添加评论。当我提交评论时,我想将当前模型的对象id作为外键添加到评论对象。

我的HTML:

<div id="respond">
<h3>Leave a Comment</h3>
<form {{action leaveComment on="submit"}} class="form-inline">
    <h5>Your Name:</h5>
    {{input type="text" value=myname}}<br>
    <h5>Your Email:</h5>
    {{input type="text" value=myemail}}<br>
    <h5>Comment:</h5>
    {{textarea class="form-control" rows="3" type="text" value=mycomment}}<br>
    <h5>Tool Id:</h5>
    {{input type="text" value=id}}<br>      
    <button type="submit" class="btn btn-primary button-form">Save</button>
</form>
</div>

当我使用此代码时,在网站上我的最后一个输入框包含活动模型的ID(这就是我想要的),但是当我发布它时,它会留空。它是唯一不起作用的领域。

这是我的js:

App.ViewController = Ember.Controller.extend({
name: null,
email: null,
comment: null,
toolid: null,
leaveComment: function() {
  var comment = App.Comment.createRecord({
    name: this.get('myname'),
    email: this.get('myemail'),
    comment: this.get('mycomment'),
    toolid: this.get('id')
  });

  comment.save().then(function() {
    this.transitionToRoute('view');
    this.set('myname', '');
    this.set('myemail', '');
    this.set('mycomment', '');
    this.set('id', '');
  }.bind(this));
}
});

注意:其他所有内容都很好。

编辑:模型添加请求

App.Tool = DS.Model.extend({
  expertise: DS.attr('string'),
  name: DS.attr('string'),
  link: DS.attr('string'),
  description: DS.attr('string'),
  rating: DS.attr('string')
});

App.Comment = DS.Model.extend({
  name: DS.attr('string'),
  email: DS.attr('string'),
  comment: DS.attr('string'),
  toolid: DS.attr('string')
});

1 个答案:

答案 0 :(得分:0)

你有两个选择。没有看到你的路线就很难说。

1:如果模型与此控制器相关联,请尝试this.get(&#39; model&#39;)。get(&#39; id&#39;);

2:通过父控制器访问模型,即

App.CommentController = Ember.Controller.extend({
  needs: ['tool']
});

然后您可以通过this.get(&#39; controllers.tool&#39;)获取工具ID。获取(&#39;型号&#39;)。

请注意,这取决于您嵌套的路由。