首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emberfire destroyRecord误差

Emberfire destroyRecord误差
EN

Stack Overflow用户
提问于 2016-01-05 01:57:57
回答 1查看 182关注 0票数 0

当我试图在我的商店中的一个项目上调用destoryRecord方法时,我正在接收destoryRecord。我尝试过用多种方式重写这段代码,但我似乎仍然遇到了一些问题。

这是我正在处理的文件。它发布的记录很好,但我一直遇到删除它们的问题。

代码语言:javascript
复制
// todo/controller.js
import Ember from 'ember';
export default Ember.Controller.extend({
    actions: {
        createTodo: function() {
            this.store.createRecord('todo', {
            name: this.get('name'),
            createdAt: new Date()
        });
        this.set('name', '');
        },
        removeTodo: function() {
        this.store.find('todo', todo).then(function(todo) {
            todo.destroyRecord();
            });
        }
    }
});





// todo/model.js
import DS from 'ember-data';
export default DS.Model.extend({
    name: DS.attr('string'),
    createdAt: DS.attr('date')
});



// todo/route.js
import Ember from 'ember';
export default Ember.Route.extend({
    model: function() {
        return this.store.findAll('todo');
     }
   });

// todo/template.hbs
{{outlet}}
<div class="jumbotron">
    <h2 class="text-center">Add a Todo!</h2>
</div>
<div class="row">
    <div class="col-sm-10 col-sm-offset-1">
<div class="panel panel-default">
    <div class="panel-heading">
    <label for="Todo">Add a Todo!</label>
    {{input value=name placeholder="Add a Todo"}}
   <button class="btn btn-default" {{action "createTodo"}}>Publish</button> 
    </div>
    {{#each model as |todo|}}
        <div class="panel-body">
        <ul>
    <li>
        <button class="btn btn-default" {{action "removeTodo"}}>x</button>  
    {{todo.name}}</li>
    </ul>
        </div>
    {{/each}}
        </div>
    </div>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-05 11:51:24

removeTodo函数有一个问题,传递给find函数的todo变量在任何地方都没有定义。

代码语言:javascript
复制
removeTodo: function() {
    this.store.find('todo', todo /* Where is this coming from */).then(function(todo) {
        todo.destroyRecord();
        });
    }

您需要对模板进行以下更改:

代码语言:javascript
复制
{{action "removeTodo" todo}}

前面的更改使todo (在each中可用)作为|todo|传递给动作removeTodo

您需要将removeTodo函数更改为

代码语言:javascript
复制
removeTodo: function(todo) {
    todo.destroyRecord();
}

现在,它接收了迭代上下文中使用的todo,您可以在函数中使用它,并对其调用destroyRecord

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34603042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档