没有处理该操作 'deleteComment'
Nothing handled the action 'deleteComment'
我有 2 个动作处理程序,updateComment 和 deleteComment,它们都以完全相同的方式爬上路线,但 updateComment 工作正常,而 deleteComment 没有,给出错误“没有处理动作 'deleteComment'.
路线:
Review.js
updateComment(comment, params) {
Object.keys(params).forEach(function(key) {
if(params[key]!== undefined) {
comment.set(key,params[key]);
}
});
comment.save();
}
},
deleteComment(comment) {
comment.destroyRecord();
}
Review.hbs
{{comment-list
loginId=model.loginId
article=model.article
user=model.user
session=model.session
updateComment="updateComment"
deleteComment="deleteComment"
}}
组件:评论-list.js
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
updateComment(comment) {
let params = {
title: this.get('title')
};
this.sendAction('updateComment', comment, params);
},
deleteComment(comment) {
this.sendAction('deleteComment', comment);
}
}
});
评论-list.hbs
{{#each article.comments as |comment|}}
{{comment-tile
comment=comment
user=user
loginId=loginId
updateComment="updateComment"
deleteComment="deleteComment"
}}
{{/each}}
comment-tile.js与comment-list.js.
完全一样
评论-tile.hbs
{{#if isAllowed}}
{{comment-update
user=user
comment=comment
updateComment="updateComment"
}}
{{comment-delete
user=user
comment=comment
deleteComment="deleteComment"
}}
{{/if}}
评论-update.js + 分类-update.hbs
import Ember from 'ember';
export default Ember.Component.extend({
updateCommentForm: false,
actions: {
updateCommentForm() {
this.set('updateCommentForm', true);
},
updateComment(comment) {
let params = {
title: this.get('title'),
body: this.get('body'),
score: this.get('score')
};
this.set('updateCommentForm', false);
this.sendAction('updateComment', comment, params);
}
}
});
{{#if updateCommentForm}}
<div>
<form>
<div class="form-group">
<label for="titleupdate">Titel</label>
{{input value=comment.title id="titleupdate"}}
</div>
<div class="form-group">
<label for="bodyupdate">Inhoud</label>
{{input value=comment.body id="bodyupdate"}}
</div>
<div class="form-group">
<label for="scoreupdate">Score</label>
{{input value=comment.score id="scoreupdate"}}
</div>
<button class="btn-default" {{action 'updateComment' comment}}>Opslaan</button>
</form>
</div>
{{else}}
<button class="btn-default btn-info" {{action 'updateCommentForm'}}>Aanpassen</button>
{{/if}}
评论-delete.js + 评论-delete.hbs
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
deleteComment(comment) {
this.sendAction('deleteComment', comment);
}
}
});
<button class="btn-default btn-danger" {{action 'deleteComment' comment}}>Verwijderen</button>
这是完全相同的代码,只是最后分成了 2 个部分。在我的一生中,我无法弄清楚为什么删除操作不起作用。当我将名称从 destroyComment 更改为 deleteComment 时,我从路由向下工作到最深的组件,当我重命名最深的组件时错误发生了变化,所以我猜它在最深的层次上出错了,但我真的不知道不明白为什么。
编辑 1: 按照建议将我的代码更改为关闭操作,但同样的问题仍然存在。
编辑 2: 在 review.js 中,在比我发布的代码更高的级别上缺少花括号。 actions:{} 在 updateComment 之后和 deleteComment 之前关闭,排除了后者的使用,但 Webstorm 没有抛出错误。这是包含错误的完整代码:
actions: {
saveComment(params) {
let newComment = this.store.createRecord('comment', params);
let article = params.article;
let user = params.user;
article.get('comments').addObject(newComment);
user.get('comments').addObject(newComment);
newComment.save().then(function () {
return article.save().then(function () {
return user.save();
});
});
},
updateComment(comment, params) {
Object.keys(params).forEach(function (key) {
if (params[key] !== undefined) {
comment.set(key, params[key]);
}
});
comment.save();
},
deleteComment(comment) {
comment.destroyRecord();
}
//Here should have been another curly brace.
});
在 review.js 中,在比我发布的代码更高的级别上缺少一个大括号。 actions:{} 在 updateComment 之后和 deleteComment 之前关闭,排除了后者的使用,但 Webstorm 没有抛出错误。
请参阅 EDIT 2 中的代码,以欣赏我的愚蠢。
我有 2 个动作处理程序,updateComment 和 deleteComment,它们都以完全相同的方式爬上路线,但 updateComment 工作正常,而 deleteComment 没有,给出错误“没有处理动作 'deleteComment'.
路线: Review.js
updateComment(comment, params) {
Object.keys(params).forEach(function(key) {
if(params[key]!== undefined) {
comment.set(key,params[key]);
}
});
comment.save();
}
},
deleteComment(comment) {
comment.destroyRecord();
}
Review.hbs
{{comment-list
loginId=model.loginId
article=model.article
user=model.user
session=model.session
updateComment="updateComment"
deleteComment="deleteComment"
}}
组件:评论-list.js
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
updateComment(comment) {
let params = {
title: this.get('title')
};
this.sendAction('updateComment', comment, params);
},
deleteComment(comment) {
this.sendAction('deleteComment', comment);
}
}
});
评论-list.hbs
{{#each article.comments as |comment|}}
{{comment-tile
comment=comment
user=user
loginId=loginId
updateComment="updateComment"
deleteComment="deleteComment"
}}
{{/each}}
comment-tile.js与comment-list.js.
完全一样评论-tile.hbs
{{#if isAllowed}}
{{comment-update
user=user
comment=comment
updateComment="updateComment"
}}
{{comment-delete
user=user
comment=comment
deleteComment="deleteComment"
}}
{{/if}}
评论-update.js + 分类-update.hbs
import Ember from 'ember';
export default Ember.Component.extend({
updateCommentForm: false,
actions: {
updateCommentForm() {
this.set('updateCommentForm', true);
},
updateComment(comment) {
let params = {
title: this.get('title'),
body: this.get('body'),
score: this.get('score')
};
this.set('updateCommentForm', false);
this.sendAction('updateComment', comment, params);
}
}
});
{{#if updateCommentForm}}
<div>
<form>
<div class="form-group">
<label for="titleupdate">Titel</label>
{{input value=comment.title id="titleupdate"}}
</div>
<div class="form-group">
<label for="bodyupdate">Inhoud</label>
{{input value=comment.body id="bodyupdate"}}
</div>
<div class="form-group">
<label for="scoreupdate">Score</label>
{{input value=comment.score id="scoreupdate"}}
</div>
<button class="btn-default" {{action 'updateComment' comment}}>Opslaan</button>
</form>
</div>
{{else}}
<button class="btn-default btn-info" {{action 'updateCommentForm'}}>Aanpassen</button>
{{/if}}
评论-delete.js + 评论-delete.hbs
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
deleteComment(comment) {
this.sendAction('deleteComment', comment);
}
}
});
<button class="btn-default btn-danger" {{action 'deleteComment' comment}}>Verwijderen</button>
这是完全相同的代码,只是最后分成了 2 个部分。在我的一生中,我无法弄清楚为什么删除操作不起作用。当我将名称从 destroyComment 更改为 deleteComment 时,我从路由向下工作到最深的组件,当我重命名最深的组件时错误发生了变化,所以我猜它在最深的层次上出错了,但我真的不知道不明白为什么。
编辑 1: 按照建议将我的代码更改为关闭操作,但同样的问题仍然存在。
编辑 2: 在 review.js 中,在比我发布的代码更高的级别上缺少花括号。 actions:{} 在 updateComment 之后和 deleteComment 之前关闭,排除了后者的使用,但 Webstorm 没有抛出错误。这是包含错误的完整代码:
actions: {
saveComment(params) {
let newComment = this.store.createRecord('comment', params);
let article = params.article;
let user = params.user;
article.get('comments').addObject(newComment);
user.get('comments').addObject(newComment);
newComment.save().then(function () {
return article.save().then(function () {
return user.save();
});
});
},
updateComment(comment, params) {
Object.keys(params).forEach(function (key) {
if (params[key] !== undefined) {
comment.set(key, params[key]);
}
});
comment.save();
},
deleteComment(comment) {
comment.destroyRecord();
}
//Here should have been another curly brace.
});
在 review.js 中,在比我发布的代码更高的级别上缺少一个大括号。 actions:{} 在 updateComment 之后和 deleteComment 之前关闭,排除了后者的使用,但 Webstorm 没有抛出错误。
请参阅 EDIT 2 中的代码,以欣赏我的愚蠢。