1

経由で取得したリストからアイテムを削除しようとしていますjQuery.getJSONEmber-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

これは、検索/追加/削除の本格的な「ember-data free」の例です

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 に答える