【发布时间】:2013-01-17 09:46:45
【问题描述】:
第 2 天学习 ember.js...
我正在开发一个离线应用程序,它需要将可拖动/可排序的磁贴位置保存到本地存储,如果没有现有数据,则从夹具加载和保存。
使用:ember 1.0.0-pre4、ember-data rev11、ember-localstorage-adapter、jQ 1.9、jQ UI 1.9 https://github.com/rpflorence/ember-localstorage-adapter
它有效,但我有点新手,觉得它不漂亮,可以使用一些社区建议。 http://jsfiddle.net/Nsbcu/4/
问题
检查
DS.Store是否已加载且为空的正确方法是什么?我直接看localstorage的方法感觉不对。-
在我从
App.Tile.DEFAULTScreateRecords之后,我觉得我应该提交它们,但是抛出了一个错误。我不必提交已知的默认值,但很好奇导致错误的原因以及我应该如何正确提交。 App.ready() 回调也是加载默认值的正确位置吗?仅当localstorage为空时才会发生错误Uncaught Error: Attempted to handle event loadedData on <App.Tile:ember231:1> while in state rootState.loaded.created.inFlight. Called with undefined 在
TilesController上,我正在使用sortProperties,在jQ UI Sortable 更改DOM 并且Ember 想要更新我的磁贴顺序之前,我使用set新的@987654332 之前效果很好@。我目前的解决方案是在更新模型时暂时关闭sortProperties。再次感觉这很 hacky,关于正确方法的建议?
=== 2 月 3 日编辑 ===
如果我执行异步提交,则可以避免问题 #2 中的初始错误。
App.TilesRoute = Ember.Route.extend({
model: function() {
return App.Tile.find();
},
setupController: function(controller) {
if (localStorage.getItem('fusion-emberjs') == null) {
App.Tile.DEFAULTS.forEach(function(item) {
App.Tile.createRecord(item);
});
// Commit async, else generates error
var _this = this;
setTimeout(function() {
_this.store.commit();
}, 1);
}
}
});
【问题讨论】:
标签: ember.js