ember-data多对多关系deleteRecord无法正常工作

时间:2013-07-08 20:00:40

标签: ember.js many-to-many ember-data delete-record

使用ember-data,我尝试删除多对多关系中的记录。

我有一个玩家和游说对象。大堂有1名业主和许多球员。玩家可以是许多游说团体的所有者和许多游说团体的成员。

我的模特:

App.Lobby = DS.Model.extend({
    title : DS.attr("string"),
    owner : DS.belongsTo("App.Player", {
        inverse : "ownedLobbies"
    }),
    players : DS.hasMany("App.Player", {
        inverse : "joinedLobbies"
    })
});

App.Player =  DS.Model.extend({
    username : DS.attr("string"),
    ownedLobbies : DS.hasMany("App.Lobby", {
        inverse : "owner"
    }),
    joinedLobbies : DS.hasMany("App.Lobby", {
        inverse : "players"
    })
});

在我的LobbyController和PlayerController中,我这样做:

  Ember.ObjectController.extend({
    doDelete : function (model) {
        model.deleteRecord();

        model.one("didDelete", this, function () {
            this.transitionToRoute("index");
        });

        model.get("transaction").commit();
    }
});

didDelete很好地触发,所以过渡确实发生了.. 当记录被删除时,例如播放器:

  • 任何拥有该玩家所有者的大厅将删除其所有者列表中的玩家。 (如此成功的一对多关系)
  • 任何将该播放器作为成员的大厅仍然会显示播放器,但所有属性都设置为已清除(用户名空白,...)。 (因此失去了多对多的关系)

删除大厅时也是如此,因此,如果大厅被删除:

  • 任何属于该大厅所有者的玩家将删除其“拥有大厅”列表下的大厅(如此成功的一对多关系)
  • 任何属于该大厅成员的玩家,仍然会在其“加入的爱好”下拥有该大厅,但所有属性都设置为已清除(标题为空白,...)(因此失败了多对多关系)< /强>

尝试删除该空白记录时,出现以下错误:

  

尝试处理事件deleteRecord   而在状态rootState.loading中。用未定义的

调用

我在互联网上找不到任何解决方案。许多人提到ember-data仍然存在错误的事实,但这看起来像是ember商店的常见用法。我忽视了什么吗?

先谢谢。

(编辑播放器或大厅会在任何地方正确更新对象。因此,只有在删除记录时才会显示。)

0 个答案:

没有答案