1

我正在尝试从通过jQuery.getJSON. Ember-data只要它还不稳定,它就不是一个真正的选择。

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();
        }
    }
});

当我按下以下按钮时,它会执行 DELETE API 调用,但它当然不会从数组中删除该项目。我怎样才能从数组中删除该项目?

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

2 回答 2

3

这是查找/添加/删除的完整“无灰烬数据”示例

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;
    }
});
于 2013-07-31T15:59:17.553 回答
0

我想你正在寻找removeObject.

http://emberjs.com/api/classes/Ember.MutableEnumerable.html

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

projects.removeObject(project);
于 2013-07-30T16:30:46.840 回答