gpt4 book ai didi

javascript - 重新计算 arrangedContent

转载 作者:行者123 更新时间:2023-11-29 15:34:58 25 4
gpt4 key购买 nike

我正在尝试重新加载模型并重新计算 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com