Emberjs视图未在创建新记录时更新?

时间:2018-07-10 17:56:04

标签: ember.js ember-data

我有一条路线,该路线使用余烬来加载多个模型,例如

import Route from '@ember/routing/route';

export default Route.extend({
    model(params) {
        return Ember.RSVP.hash({
            contest: this.store.query('contest',{match: params.matchId}),
            match: this.store.findRecord('match', params.matchId)
        })
    }
});

然后我使用以下代码在控制器中创建竞赛的新实例

    newContest() {
         this.store
            .createRecord('contest', {
                name: this.get('contestName'),
                fee: this.get('contestFee'),
                winning: this.get('contestWinning'),
                capacity: this.get('contestCapacity'),
                match: this.get('model').match.get('id')
            })
            .save();
    }

问题在于它没有反映在我正在渲染的模板中

        {{#each model.contest as |contest| }}
        <tr>
            <td>{{contest.name}}</td>
        </tr>
        {{/each}}

我在哪里错了?

1 个答案:

答案 0 :(得分:1)

那是因为您使用this.store.query。此方法仅通过适配器进行查询,而无需进行任何缓存。

更新模型的最简单方法是调用refresh路由方法。要从控制器执行此操作,您可以在路线中定义refresh动作,然后在保存新竞赛后从控制器执行this.send('refresh');