我将Ember与Electron结合使用。
由于用户可以为应用程序定义一些设置,我认为将设置数据存储在本地存储中是一个很好的主意。
为此我使用了ember-local-storage adapter。
存储,删除和显示此数据就像魅力一样 这些设置应该在某些功能中使用,所以我想将它们从本地存储中取出。 我期望一个数组或JSON对象 - 甚至与本地存储中显示的格式相同。但我只收到一个巨大的抽象对象?!
这就是我要存储的内容(例如):
{"identifier":"identifier1","bid":"6653ggd245","name":"test1"}
{"identifier":"identifier2","bid":"kkhd7765vv","name":"test2"}
这是localstorage(开发工具)中显示的内容:
{"buttons":
{"records":
{"i7lvj":{"id":"i7lvj","identifier":"identifier1","bid":"6653ggd245","name":"test1"},"i80vm":{"id":"i80vm","identifier":"identifier2","bid":"kkhd7765vv","name":"test2"}
}}}
这是我尝试访问数据的方式:
this.get('store').findAll('buttons').then(function(SavButtons){
console.log(SavButtons);
});// gett all stored buttons
this.get('store').findRecord('buttons','i7lvj').then(function(SavButtons){
console.log(SavButtons.data);
});// get specific button -> works
此数据是生成用于API请求的Promises的params数组的基础。 我可以做些什么来实现可重用的结构? 例如: 0:{RECORD1} 1:{RECORD2}
或者是否有更简单/更好的方式来存储应用关闭后用户所做的设置,也许我错过了一些东西。
非常感谢!
答案 0 :(得分:0)
首先,你确定你的模型叫"按钮"?您可能需要使用
this.get('store').findAll('button')
此外,您从商店收到的是Ember.ArrayProxy或从Ember.Array扩展的其他类。它有使用元素的特殊方法,你应该尝试那些
其次,我不认为Ember Data有利于设置。我发现创建自定义"设置更容易#34; service并使用它。让我与node-webkit分享我使用的my implementation。它对你不起作用"就像#34;,但你可能会有所了解。我支持文件和本地存储(用于web-app的nw-app和存储文件),如果只需要本地存储,则可以简化_persist
和_restore
方法。
简要说明其工作原理:它是使用修改后的init
,set
和setProperties
方法的基本服务。因此,当您呼叫控制器this.get('settings').set('key', vale);
时,设置将保留在本地存储中。初始化服务时,设置将从存储器加载到内存。一个限制:您必须明确调用设置服务的set
和setProperties
方法,如果您使用this.set('settings.key', value);
之类的设置,则不会保留设置。与ember数据分开服务的主要优点是,您不需要为不同类型的设置创建模型,您可以保存任何简单的值或POJO。