javascript - 强制 ember-data 从服务器重新加载特定记录

标签 javascript json rest ember.js ember-data

假设我有 2 个用于帖子的嵌套资源。它在我的路由器中是这样定义的。

this.resource('posts', function () {
    this.resource('post', {path: '/:post_id'});
});

每个帖子还可以有多个相关评论。

在我的 *posts_route.js* 中,我设置了如下模型:

return this.get('store').findAll('post');

这会向我的后端 api 发出 GET 请求,该请求将所有帖子以 json 形式返回。此时我只需要基本信息(并且不需要注释),因此并不是所有数据都包含在返回的 json 中。稍后,如果我点击特定帖子,我会在 *post_route.js* 中执行此操作:

return this.get('store').find('post', params.post_id);

有了这个,我希望仅针对该特定帖子执行新的 GET 请求。但 ember-data 不会发出新的服务器请求。我在本地商店中查找它,但没有找到我希望获得的扩展数据。

有没有办法强制 ember-data 向服务器发出真正的请求?谢谢。

最佳答案

您可以使用model.reload()强制向显示路由发出新的 GET 请求。您可以在显示路由的 afterModel Hook 或 setupController Hook 中执行此操作。如果您确实不想在模型已加载的情况下再次触发此请求,则可以在模型上定义一个普通的旧 reloaded 属性:

MyModel = DS.Model.extend({
   ... attributes ...
   reloaded: false
})

然后在重新加载完成时将其设置为 true:

model.reload().then(function(response) { model.set('reloaded', true'); });

关于javascript - 强制 ember-data 从服务器重新加载特定记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21014643/

相关文章:

javascript - 获取可拖动元素的实时位置

javascript - Atom.io 中 AngularJS 的方法完成

javascript - 从下拉列表中发布 URL,没有 'submit' 按钮

php - HTML 字段;在 json_encode 之后设置 PHP 数组 - 发送到 Jquery?

json - 应该如何为 RESTful JSON 集合实现 HATEOAS 样式的链接?

javascript - 如何使用 jQuery 向 Dictionary.com 的 REST API 发出 AJAX 请求?

javascript - 如何根据其他数组更改原始数组

c# - 有没有办法将 xml 转换为 json?

java - Jax-RS 从 byte[] 生成图像

java - 在API响应中返回Enum的值而不是Spring boot中的名称