Javascript 没有处理该操作';删除注释';
我有两个操作处理程序,updateComment和deleteComment,它们都以完全相同的方式向上爬升到路由,然而updateComment工作得很好,其中deleteComment没有,给出了错误“Nothing handled the action”“deleteComment” 路线: Review.jsJavascript 没有处理该操作';删除注释';,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我有两个操作处理程序,updateComment和deleteComment,它们都以完全相同的方式向上爬升到路由,然而updateComment工作得很好,其中deleteComment没有,给出了错误“Nothing handled the action”“deleteComment” 路线: Review.js updateComment(comment, params) { Object.keys(params).forEach(function(key) {
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"
}}
组件:comment-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);
}
}
});
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完全相同
comment-tile.hbs
{{#if isAllowed}}
{{comment-update
user=user
comment=comment
updateComment="updateComment"
}}
{{comment-delete
user=user
comment=comment
deleteComment="deleteComment"
}}
{{/if}}
comment-update.js+category-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}}
在review.js中,在比我发布的代码更高的级别上缺少了一个大括号。操作:{}在updateComment之后和deleteComment之前关闭,不包括后者以供使用,但Webstorm没有抛出错误
查看编辑2中的代码,看看我的愚蠢在它的荣耀中。我觉得你的代码不错。它应该像你期望的那样工作。我的建议是对这种深层次的行动使用关闭行动。你可以问为什么?。如果你能在twiddle中复制它,它将帮助我们整理它。您可以停止并重新启动ember server。我刚刚用route action helper将其更改为Close actions,这完全是一样的,lol。更新可以很好地使用它,删除是不可能的。我会试着做一把小提琴来重现错误。我找到了解决办法。毕竟有错误的代码,webstorm没有通知我。在review.js中有一个短花括号,因此在update操作之后,动作花括号会自动关闭,从而排除delete操作。我之所以注意到它,是因为我想一次尝试一个操作处理程序,当我删除updateComment时,错误就出现了。从我发布的代码来看,这个错误是不可见的,为了简洁起见,我只包含了这两个动作,我相信其他一切都正常,但错误的级别更高。很高兴你找到了它。我添加了一个带有错误代码的编辑,因此你可以见证我的愚蠢
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>
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.
});