gpt4 book ai didi

ember.js - Ember-data - "Attempted to handle event ` deleteRecord` on *record* 而处于 root.deleted.saved 状态。”

转载 作者:行者123 更新时间:2023-12-03 22:36:39 24 4
gpt4 key购买 nike

我正在尝试在我的应用程序中使用 ember-data 来管理关注者/关注者关系。我遇到了一个问题,如果用户点击开关打开/关闭 ember 会抛出“在 root.deleted.saved 状态下尝试处理事件 deleteRecord”。有没有人遇到过这个?

下面的操作代码

    actions: {
follow: function(model){
var component = this;
var store = this.get('targetObject.store');
var session = this.get('targetObject.session');
this.set('isFollowed', true)

/* Follower Side */
Ember.RSVP.hash({
profile: store.find('profile', model),
follower: session.get('currentUser.profile')
}).then(function(rsvp){

var follower = store.createRecord('follower', {
profile: rsvp.profile,
follower: rsvp.follower,
status: 'approved'
});


var followed = store.createRecord('followed', {
profile: rsvp.follower,
followed: rsvp.profile,
status: 'approved'
});

followed.save().then(function(savedFollowed){
rsvp.follower.get('followeds').addObject(savedFollowed);
});
follower.save().then(function(savedFollower){
rsvp.profile.get('followers').addObject(savedFollower);
});


})
},

unfollow: function(model){
var component = this;
var store = this.get('targetObject.store');
var session = this.get('targetObject.session');

this.set('isFollowed', false)

/* Remove Follower Side */
component.set('isFollowed', false)
Ember.RSVP.hash({
profile: store.find('profile', model),
follower: session.get('currentUser.profile')
}).then(function(rsvp){

/* Delete Follower Side */

var follower_id = rsvp.follower.get('id');
rsvp.profile.get('followers').forEach(function(item){
if(follower_id == item.get('followLink')){
item.destroyRecord();
}
})

var profile_id = rsvp.profile.get('id');

rsvp.follower.get('followeds').forEach(function(item){
if(profile_id == item.get('followLink')){
item.destroyRecord();
}
})
})
}
}

更新

我解决了这个问题 - 感谢 GJK 的回应。对于遇到此问题的人 - 因为我使用“addObject”手动将记录添加到父模型的“hasMany”关系 - 当我删除记录时,我还需要将其从该关系中删除,以便它不存在在 parent “hasMany”中,这再次出现在删除循环中。长话短说,解决方案是添加“removeObject(item)”,即...
item.destroyRecord(); 
rsvp.follower.get('followeds').removeObject(item);

item.destroyRecord();
rsvp.profile.get('followeds').removeObject(item)

最佳答案

root.deleted.saved意味着您的模型已经被删除,并且更改已保存到服务器。我的猜测是 followersfolloweds是不一定不相交的用户集。

关于ember.js - Ember-data - "Attempted to handle event ` deleteRecord` on *record* 而处于 root.deleted.saved 状态。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24071339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com