【问题标题】:Ember JS: Reloading entire collection after record insertionEmber JS:插入记录后重新加载整个集合
【发布时间】:2015-10-16 12:04:10
【问题描述】:

我在后端使用 ember 1.13.8 和 rails 4。我的应用程序中有一个“项目”模型。在插入项目记录后,如何强制 ember 重新加载包含所有项目集合的项目路由。这是我的项目路由文件并创建:

app/routes/items/create.js
import Ember from 'ember';

export default Ember.Route.extend({
    model: function(){
       return this.store.createRecord('item');
    },
    actions: {
      create: function(){
         var self=this;
         self.controller.get('model').save().then(
            function() {
                self.transitionTo('items');
         });
      }     
    }
});

app/routes/items.js
import Ember from 'ember';

export default Ember.Route.extend({
    model: function(){
        return this.store.findAll('item');
    }
});

插入记录后,我使用transitionTo转到不会自动重新加载模型的项目路由,那么如何让ember从服务器重新加载数据。

【问题讨论】:

  • 您的新“item”记录未添加到“items”列表中?
  • 该项目被添加到“项目”列表中,但在我手动刷新“项目”路由之前不会显示在“项目”列表中。
  • store.findAll('item', { reload: true }); //强制获取新数据
  • 但是模型钩子没有在transitionTo路由上被调用。当我将它用作动作时它可以工作,但我想将它用作在 transitionTo 上自动调用的钩子。
  • 如果您希望卸载商品或致电推荐人,您新创建的商品应该已经在商店中了..

标签: ember.js ember-data


【解决方案1】:

尝试以下方法之一:

  1. 在控制器实例上调用 reset() 或
  2. 在路由器实例上调用 refresh()。
  3. 调用model.reload()

那应该为你重新加载模型:)

【讨论】:

  • 调用刷新对我有用,将其用作操作,但我想将其用作在 transitionTo 路由时执行的钩子。
  • 它不能在钩子中使用?只需从处理程序函数中触发一个动作然后..那不会做这项工作吗?
  • 不,它不会在钩子中工作,因为钩子不会在 transitionTo "Items" 路由上执行。
猜你喜欢
  • 2020-05-20
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多