Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 如何从没有余烬数据的列表中删除项目?_Ember.js - Fatal编程技术网

Ember.js 如何从没有余烬数据的列表中删除项目?

Ember.js 如何从没有余烬数据的列表中删除项目?,ember.js,Ember.js,我试图从通过jQuery.getJSON获取的列表中删除一项余烬数据不是一个真正的选项,只要它还不稳定 App.Project = Ember.Object.extend({ remove: function() { return $.ajax({ url: '/api/v1/projects/'+this.get('id'), type: 'DELETE' }); } }); App.Projec

我试图从通过
jQuery.getJSON
获取的列表中删除一项<代码>余烬数据不是一个真正的选项,只要它还不稳定

App.Project = Ember.Object.extend({
    remove: function() {
        return $.ajax({
            url: '/api/v1/projects/'+this.get('id'),
            type: 'DELETE'
        });
    }
});

App.Project.reopenClass({
    findAll: function() {
        return jQuery.getJSON('/api/v1/projects').then(
            function(response) {
                var projects = Ember.A();

                if (response.projects !== undefined) {
                    response.projects.forEach(function (project) {
                        projects.pushObject(App.Project.create(project));
                    });
                }

                return projects;
            }
        );
    }
});

App.ProjectsRoute = Ember.Route.extend({
    model: function() {
        return App.Project.findAll();
    },

    events: {
        deleteProject: function(project) {
            project.remove();
        }
    }
});
当我按下下面的按钮时,它会执行deleteapi调用,但它当然不会从数组中删除该项。如何从阵列中删除该项

<button class="btn btn-mini btn-danger" {{action 'deleteProject' this}}><i class="icon-trash"></i> Delete</button>
删除

我想您正在寻找
removeObject

您需要获取对项目控制器内容的内容的引用,然后将单个项目传递给removeObject方法

projects.removeObject(project);
下面是一个完整的“无余烬数据”查找/添加/删除示例

App.Person = Ember.Object.extend({
    id: null,
    username: ''
});

App.Person.reopenClass({
    people: [],
    add: function(hash) {
        var person = App.Person.create(hash);
        this.people.pushObject(person);
        $.ajax({
            type: "POST",
            url: "/people/",
            data: hash,
            error: function() {
                alert("create failed");
            },
            success: function(response) {
                person.set('id', response.id);
            }
        });
    },
    remove: function(person) {
        this.people.removeObject(person);
        $.ajax({
            type: "DELETE",
            url: "/people/" + person.id + "/",
            error: function() {
                alert("delete failed");
            }
        });
    },
    find: function() {
        var self = this;
        $.getJSON('/people/', function(response) {
            response.forEach(function(hash) {
                var person = App.Person.create(hash);
                Ember.run(self.people, self.people.pushObject, person);
            });
        }, this);
        return this.people;
    }
});

这看起来确实是我所需要的,但是我如何才能得到一套项目呢?我尝试了
this.get('model').removeObject(project)
,但该模型没有该方法。另外,
this.get('content')
未定义。似乎我需要一个Ember.Set,但当我将findAll方法转换为使用Ember.Set时,我得到了一个
Object[Object Object]没有方法“addArrayObserver”
异常。该链接现在已失效