我仍然对Ember从远程API获取数据并将其保存在浏览器中的方式感到困惑。
所以我创建了一个REST适配器来获取带有Ajax调用,序列化器和相应模型的记录集。假设它们是帖子,我已经成功发布帖子索引页面,用户可以点击任何帖子进入帖子详细信息页面。
Ajax调用发生在索引页面上,使用Ember检查器,很明显所有记录都存储在本地存储中。
但是当我点击"后退链接"这可以在每个帖子详情页面上找到,它会重定向到' / posts /' ,但它似乎再次进行ajax调用。因此,所有帖子都会从API中获取,再次使页面的响应性降低。
这是我的问题:
希望有意义并提前感谢!
更新
我的帖子适配器:
App.PostAdapter = DS.RESTAdapter.extend({
findAll: function(store, type, sinceToken) {
var url = 'THE URL TO GET JSON BACK';
return $.getJSON(url).then(function(data) {
return posts;
})
}
});
我的帖子和帖子路线:
App.PostRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('post', params.postId);
}
})
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('post');
}
})
答案 0 :(得分:1)
关于你的第一个问题:这取决于路线的模型回调。如果您使用商店的all
method,则不会再次生成Ajax请求。 (但是:您有责任在第一时间获取数据。您希望在某处稍微加载数据,或者如果 textArea = new JTextArea();
textArea.setFont(new Font("Arial", Font.PLAIN, 12));
没有返回任何内容,可能需要致电find
。这取决于你的申请。
关于第二个问题:RESTAdapter应该可用于单个数据项和列表。您可以使用find
在路径中实现模型挂钩。如果你link-to
这个路由带有一个对象(而不是一个ID),那么这个钩子就不会被调用。所以只有在需要时才会调用钩子。