我开始使用骨干网,我使用this localStorage adapter。 这是我的测试代码:
cartStatus = Backbone.Model.extend({
localStorage: new Store("cartStatus"),
currentClientId: ""
});
var myStatus = new cartStatus;
$(function () {
myStatus.fetch();
alert("loaded" + myStatus.get("currentClientId"));
myStatus.set({ "currentClientId": "abc" });
myStatus.save();
});
如果我多次加载页面,则每次都会显示loaded: undefined
。
然而,在我第二次加载后,我每次都会期待loaded: abc
。
当我在2次加载后检查我的本地存储时,我看到了:
cartStatus-d2a7b64d-2f15-a741-9a8c-e254b4a13682 {"0":{"currentClientId":"abc","id":"dd5e0e47-9356-ea30-2de3-75a041848b88"},"currentClientId":"abc","id":"d2a7b64d-2f15-a741-9a8c-e254b4a13682"}
cartStatus dd5e0e47-9356-ea30-2de3-75a041848b88,d2a7b64d-2f15-a741-9a8c-e254b4a13682
cartStatus-dd5e0e47-9356-ea30-2de3-75a041848b88 {"currentClientId":"abc","id":"dd5e0e47-9356-ea30-2de3-75a041848b88"}
有谁知道出了什么问题?
修改
我创建了一个jsfiddle来演示这个(运行两次)http://jsfiddle.net/Myster/fE9eQ/3/
答案 0 :(得分:0)
@tkone,我建议你提出正确答案。获取是异步的,所以除非你使用jquery deferreds或在成功回调中进行模型设置/保存,否则这将是行为。
cartStatus = Backbone.Model.extend({
localStorage: new Store("cartStatus"),
currentClientId: ""
});
var myStatus = new cartStatus();
$(function () {
debugger;
myStatus.fetch({
success: function(x) {
document.write('myStatus.fetch - success !<br />');
myStatus.set("currentClientId", "abc" );
myStatus.save();
}
});
});