在createRecord上重新加载模型/更新模板

时间:2015-08-09 12:47:49

标签: ember.js ember-data ember-cli

我看到这个问题正在被重新提出,但仍然没有找到适合这种微不足道任务的解决方案。

此网址显示工作区的导航标签列表。

http://localhost:4200/users/1/workspaces

每个标签解析为

http://localhost:4200/users/1/workspaces/:wid

此外,我还有一个按钮,可以创建一个新工作区以及新选项卡。

这里看起来是怎样的控制器:

export default Ember.Controller.extend({

    actions: {
        newWorkspace: function () {
            this.get('currentModel').reload();
            var self = this;

            var onFail = function() {
                // deal with the failure here
            };

            var onSuccess = function(workspace) {
                self.transitionToRoute('dashboard.workspaces.workspace', workspace.id);
            };

            this.store.createRecord('workspace', {
                title: 'Rails is Omakase'
            }).save().then(onSuccess, onFail);

        }
    }
});

当我点击按钮时,我在ember检查器中看到确实创建了新记录以及重定向到代表新创建工作区的id的URL。

我的问题是如何强制模型/模板重新加载。我已经杀了5h尝试model.reload()等。似乎不再支持所有东西。请帮忙。

更新 添加onSuccess

model.pushObject(post);

throws Uncaught TypeError:internalModel.getRecord不是函数

2 个答案:

答案 0 :(得分:0)

我相信您应该为Ember Data 1.12.x或更早版本调用this.store.find('workspace', workspace.id)。对于1.13和2.0,有更复杂的钩子确定浏览器是否应该再次查询服务器或使用缓存值;在这种情况下,请致电this.store.findRecord('workspace', workspace.id, { reload: true })

答案 1 :(得分:0)

我不知道这是否有帮助。我遇到了类似的问题。我的行动是在路线上进行的。刷新功能可以处理所有事情。