在没有Ember Data的情况下重新加载当前路线的模型

时间:2014-01-28 13:51:18

标签: ember.js

Ember Data有一个reload方法;不过,我使用更基本的方法(using Ember objects)来提供我的模型。

我希望用户能够通过例如以下操作重新加载当前路线的模型。单击一个按钮。没有Ember Data,这可能吗?

2 个答案:

答案 0 :(得分:1)

这是一个非常简单的示例,说明我如何使用您的方法(注意“清除”)。

您可以从路线/控制器/其他任何地方调用clear + find。我还在一些较大的应用程序中为$ .ajax添加了一个“beforeSend”(这将在xhr解析之前为你调用clear)。

App.Person.reopenClass({
    people: Ember.A([]),
    clear: function() {
        this.people = Ember.A([]);
    },
    add: function(hash) {
        var person = App.Person.create(hash);
        this.people.pushObject(person);
    },
    remove: function(person) {
        this.people.removeObject(person);
    },
    find: function() {
        var self = this;
        $.getJSON('/api/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;
    }
});

答案 1 :(得分:0)

问题是我正在进行的AJAX调用的异步性质。

这不起作用: this.set('model', App.MyObject.findAll(value));

我需要允许AJAX调用返回响应,然后填充模型:

var that = this;

App.MyObject.findAll(value).then(function(response) {
  that.set('model', response);
});