如何在不删除具有多对多关系的 ember 中的记录的情况下删除关联?
How to remove association without deleting record in ember with many-to-many relationship?
通过查看 SO 上的各种问题,我了解到 ember 和 hasMany
关系存在问题。我正在使用 ember-data 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
}
}
通过查看 SO 上的各种问题,我了解到 ember 和 hasMany
关系存在问题。我正在使用 ember-data 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
}
}