删除操作不起作用

时间:2015-10-19 15:29:18

标签: ember.js

我正在尝试按照Getting Started with Ember.js Using Ember CLI学习ember.js。本教程将向您展示如何构建待办事项列表,但我无法使删除操作正常工作。由于我刚开始使用ember,我不是100%确定你们需要查看的代码,但删除按钮位于app/templates/components/todo-item.hbs

{{#if editing}}
    {{input class="edit" value=todo.title action="submitTodo"}}
{{else}}
    {{input type="checkbox" checked=todo.complete class="toggle"}}
    <label class="{{if todo.complete 'completed'}}" {{action "editTodo" on="doubleClick"}}>{{todo.title}}</label>
    <button class="destroy" {{action "deleteTodo"}}></button>
{{/if}}

我在app/components/todo-item.js中有删除操作,如此:

  actions: {
    editTodo() {**code**},
    submitTodo() {**code**},
    deleteTodo() {
      let todo = this.get('todo');
      this.sendAction('deleteTodo', todo);
    }
  }

app/routes/todos.js我有:

actions: {
    createTodo(newTitle) {**code**},
    updateTodo(todo) {
        todo.save();
    },
    deleteTodo(todo) {
        todo.destroyRecord();
    }
}

当我点击删除按钮时,没有任何反应,以下内容显示在Ember Inspector控制台中:

  

Successful request: DELETE /todos/2

     

Object(其中嵌套了很多东西)

     

Error: Assertion Failed: normalizeResponse must return a valid JSON API document: * One or more of the following keys must be present: "data", "errors", "meta".

我不确定这个错误意味着什么,所以如果有人能解释并提供可能的解决方案,我真的很感激。

github repo

2 个答案:

答案 0 :(得分:1)

您需要更改此内容:this.del('/todos/:id')

this.del('/todos/:id', function(db, request) {
        var id = request.params.id;
        return {
            data: {
                type: 'todos',
                id: id,
                attributs: db.todos.find(id)
            }
        };
    });

答案 1 :(得分:0)

这是说发送删除请求时服务器的响应不符合预期。 Ember希望您的后端符合here概述的JSON API规范。这意味着它期望具有JSON对象的响应具有&#34;数据&#34;,&#34;错误&#34;或者&#34; meta&#34;在基层。在这种情况下,为了让Ember高兴,我建议您想要返回一个看起来像这样的对象:

 {data: {}}

这实际上只是向Ember确认该对象已被删除。