将第二个模型添加到路径中

时间:2014-10-15 13:02:41

标签: ember.js relationship has-many relationships

我的申请是为了游泳课程。我需要将游泳运动员添加到课堂上。这种关系在两个方向都有很多。课程可以让很多游泳运动员和游泳运动员可以有很多课程。

从课程路线中,我想从所有游泳运动员的名单中选择一名游泳运动员,然后将游泳运动员的身份证添加到课程的“游泳运动员”阵列中。

我不能让游泳者出现在下拉区域,因为我认为我没有正确加载第二个模型。

我也愿意接受如何将特定游泳运动员添加到特定班级的建议。看到所有可用的游泳选手很重要

我是ember和编程的新手,所以在提出建议时请记住这一点。谢谢!

App.Router.map(function() {
this.resource('lessons', { path: '/lessons' }, function() {
  this.resource('lesson', { path: '/:lesson_id' })
  this.route('new', { path: '/new' })
});

this.resource('swimmers', { path: '/swimmers' }, function() {
  this.resource('swimmer', { path: '/:swimmer_id' })
  this.route('new', { path: '/new' })
});

});


App.Lesson = DS.Model.extend({

type: DS.attr(),
name: DS.attr(),
/*level: DS.attr(),   sometimes there are hybrid levels, likely leave it up to */
instructor:DS.belongsTo('instructor', {async: true}),
startDate: DS.attr(),
endDate: DS.attr(),
capacity: DS.attr('number'),
swimmers: DS.hasMany('swimmer',{async: true}),
});

App.Swimmer = DS.Model.extend({


  nameFirst: DS.attr(),
  nameLast: DS.attr(),
  level: DS.attr(),
  birthdate: DS.attr(),
  gender: DS.attr(),
  note:DS.attr(),
  lessons: DS.hasMany('lesson', {async: true}),
  });



 App.LessonRoute = Ember.Route.extend({
  model: function(params) {
      return Ember.RSVP.hash({
          lesson: this.store.find('lesson', params.lesson_id),
          swimmers: this.store.findAll('swimmer')
      })
   },

   setupController: function(controller, model) {
    controller.set('model', model.lesson);
    controller.set('swimmer', model.swimmer);
  },
});

下拉我正在尝试使用

                    <div class="form-group">
                      <label for="lesson_swimmers" class="col-sm-2 control-     label">Swimmers</label>
                      <div class="col-sm-9">
                        {{view Ember.Select content=swimmers optionLabelPath="content.fullName" class="form-control" id="lesson_swimmers"}}
                      </div>
                    </div>

1 个答案:

答案 0 :(得分:0)

这个问题有两个答案。适合您的将取决于您提供模型的方式。

如果您通过 transferTo linkTo 抵达,则需要使用与通过网址直接抵达时不同的方法。

@ Kingpin2k回答了这个问题,并提供了示例,

Kingpin2k's elegant solution.