如何在不删除具有多对多关系的余烬中的记录的情况下删除关联



通过查看SO的各种问题,我了解到余烬和hasMany关系存在问题。我正在使用余烬数据 1.0.0-beta.12,我试图了解事情的当前状态。

我的应用程序有一个Player模型和一个Tournament模型,锦标赛有多个玩家,玩家可以参加多个锦标赛。这是我的模型:

var Player = DS.Model.extend({
  name: DS.attr('string'),
  tournaments: DS.hasMany('tournaments', {async: true}),
});
var Tournament = DS.Model.extend({
  title: DS.attr('string'),
  players: DS.hasMany('player', {async: true}),
});

我有一个列出锦标赛中球员的模板:

{{#each player in players}}
    <a class="list-group-item" href="#" {{action 'removePlayer' NOT_SURE_WHAT_MODEL_TO_PASS}}>
      {{player.name}}
    </a>
{{/each}}

我开始定义我的removePlayer动作,但我被卡住了。我可以传递锦标赛或玩家来行动,但似乎我两者都需要。然后一旦我有了它们,我不知道可以使用什么方法来删除关系,我在文档中找不到任何关于它的内容,它在网上看到了各种方法。

如何将玩家和锦标赛模型传递给我的控制器?在不删除任一记录的情况下删除关联的最直接方法是什么?

我正在使用 ember-cli 0.1.5,具有以下版本:

DEBUG: -------------------------------
ember.js:15373 DEBUG: Ember      : 1.8.1
ember.js:15373 DEBUG: Ember Data : 1.0.0-beta.12
ember.js:15373 DEBUG: Handlebars : 1.3.0
ember.js:15373 DEBUG: jQuery     : 1.11.2
ember.js:15373 DEBUG: -------------------------------

您可以将锦标赛和玩家传递给行动:

{{#each player in players}}
    <a class="list-group-item" href="#" {{action 'removePlayer' player tournament}}>
      {{player.name}}
    </a>
{{/each}}

然后在控制器中实现一个采用多个参数的操作:

  actions: {
    removePlayer: function(player, tournament) {
      tournament.get('players').removeObject(player);
      // you can save the tournament and player here, unless you are handling that as part of another action
    }
  }

最新更新