为什么'Todos.ApplicationAdapter = DS.FixtureAdapter.extend();'替换为' Todos.ApplicationAdapter = DS.LSAdapter.extend({ 命名空间:“todos-emberjs” }); '可以在当地的商店实现吗?
'namespace:'todos-emberjs“'是什么意思?
有多少种适配器?我应该如何使用它们?如何定义适配器?
答案 0 :(得分:2)
(Check out the picture here to see where ADAPTER component fits in)
我最近刚刚阅读了EmberJS教程,并从我的理解:
1)什么是EmberJS适配器? 适配器是负责应用程序和服务器之间通信的对象。每当您的应用程序要求商店提供没有缓存的记录时,它都会向适配器询问它。如果您更改记录并保存,则商店会将记录交给适配器,以将适当的数据发送到您的服务器并确认保存是否成功。
2)有哪些类型的EmberJS适配器? 现在我只知道商店默认使用的 DS.RESTAdapter (它通过XHR传输JSON与HTTP服务器通信), DS.FixtureAdapter (类似于内存存储(非持久性)和 DS.LSAdapter (类似于本地存储的持久性)。
3)为什么在Todos教程中使用LSAdapter代替FixtureAdapter? FixtureAdapter将数据存储在内存中,因此每当您刷新页面时,数据都会重新分配给初始值。但是LSAdapter在github上可用,它使用持久存储来存储和检索数据,因此即使在刷新页面后也可以保留所有更改。
4)为什么命名空间:“todos-emberjs”? 如果您的JSON API位于主机根目录之外的其他位置,则可以设置将添加到所有请求的前缀。例如,如果您的JSON API在 / todo-emberjs / 中可用,您可能希望将其用作您要调用的所有URL的前缀。在这种情况下,将namespace属性设置为 todo-emberjs 。
(希望它有所帮助,爱上EmberJS顺便说一句!)