javascript - 重新计算 arrangedContent

标签 javascript ember.js ember-cli

我正在尝试重新加载模型并重新计算 arrangedContent。该模型似乎正在重新加载,但未重新计算 arrangedContent。对数据进行排序很好,它正在添加和删除导致问题的数据。

reloadModelData: function () {
  this.get('target.router').refresh();
}

我的模板看起来像:

{{#each project in arrangedContent}}
<tr>
  <td>{{project.name}}</td>
  ...
</tr>
{{/each}}

编辑:

路线/项目/index.js

import Ember from 'ember';

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

});

Controller /项目/index.js

import Ember from 'ember';

export default Ember.Controller.extend(Ember.SortableMixin, { 
  queryParams: ['sortProperties', 'sortAscending'],
  sortProperties: ['name'],

  actions: {
    ...

    reloadModelData: function () {
      this.get('target.router').refresh();
    }
  }
});

一个按钮触发了reloadModelData

<button {{action 'reloadModelData'}}>Reload</button>

最佳答案

您的 model Hook 未在您的操作中执行。为什么?因为你正在 targer.router 上执行 #refresh(),这不是当前路由,而是 Router

那么,如何刷新模型?

有一个约定叫做数据向下 Action 向上。它支持向上发送 Action 到对象,比方说,数据更改的父对象。可能的解决方案是让您的 reloadModelData 冒泡到路由并在 route 中处理此操作。然后,在该操作中,您可以再次获取数据并将它们设置在 Controller 上:

# controller code    
reloadModelData: function() {
  return true;
}

在 route :

# route code
reloadModelData: function() {
  this.store.find('project').then((function(_this) {
    return function(projects) {
      _this.get('controller').set('model', projects);
    };
  })(this));
}

如果 find 的结果与原来不同,model 相关的计算属性肯定会重新计算。

Here is a working demo in JSBin比较你和我的解决方案。

关于javascript - 重新计算 arrangedContent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30348173/

相关文章:

javascript - 如何将 RethinkDB 与 EmberJS 框架结合使用?

javascript - 如何在 Ember.js 中动态加载 partials/views/templates

javascript - EmberJS : "Uncaught Error: More context objects were passed than there are dynamic segments for the route"

javascript - 停止在 jQuery 中缓存图像

javascript - Google Chrome 中的西里尔字母 URL?

ember.js - Ember : Re-render a route's template when the model changes

ember.js - 如何更改 ember-cli 中的 dist-folder 路径?

javascript - Ember.js 工具类

javascript - 在 JavaScript 中逐行动态添加字幕到视频元素

javascript - 如何用早午餐定义相对依赖