2015-01-06 191 views
1

從查看SO中的各種問題,我瞭解到存在關於餘燼和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行動,但我堅持。我可以通過比賽,也可以通過球員參加比賽,但似乎我需要兩者。然後,一旦我擁有了它們,我就不知道可以用什麼方法消除這種關係,在文檔中我找不到任何關於它的東西,並且它在網絡上看到了各種各樣的方法。

如何將玩家和錦標賽模型都傳遞給我的控制器?在不刪除任何記錄的情況下刪除關聯最直接的方法是什麼?

我使用燼-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: ------------------------------- 

回答

2

可以同時通過比賽和球員的動作:

{{#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 
    } 
    }