Javascript 没有处理该操作';删除注释';

Javascript 没有处理该操作';删除注释';,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和deleteComment,它们都以完全相同的方式向上爬升到路由,然而updateComment工作得很好,其中deleteComment没有,给出了错误“Nothing handled the action”“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"
}}
组件: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.
});