我正在尝试使用本地存储来实现一个“有很多”的关联。我建立了两个模型:用户模型和产品模型。我的用户有很多产品。我想:
在用户获得授权后,通过AJAX从服务器加载我的用户。产品已经存储在本地存储中(如{"id":"ext-record-1","user_id":1,"name":"product1"})。
// The id and name are loaded via ajax
var user = Ext.create('User', {id: 1, name: 'Ed'});
var userProducts = user.products();
userProducts.load();问题是:如果我调用关联,所有来自存储/代理的实例都会被加载。根据文档,应该只有user_id为的实例:1
筛选器已设置。只有当我从本地存储加载产品时才会发生这种情况,如果我在适当的地方创建它们就没有问题。保存到本地存储会破坏这种关联。
我在这里设置了一个不带本地存储的示例:http://www.senchafiddle.com/#J9VX6
并使用本地存储:http://www.senchafiddle.com/#J9VX6#hBDkq
请参阅http://docs.sencha.com/touch/2-0/#!/api/Ext.data.association.HasMany
我真的很感谢你的帮助
发布于 2012-10-31 16:21:18
这似乎是一个已知的bug,我在sencha touch论坛上得到了我的问题的链接:
http://www.sencha.com/forum/showthread.php?173327-WebStorage-proxy-can-t-deal-with-associated-data
我认为直到Sencha Touch的下一个版本才能解决这个问题
发布于 2012-10-31 09:39:03
Richard Chambers是对的;不一定要在userProducts上调用load()。
更进一步说。确保用户模型上的idProperty设置为'id‘(这是默认设置),并且您的用户关联上的foreignKey设置为’hasMany _id‘。
如果这不能提供解决方案,您可能希望尝试在UserProducts上使用筛选器:
var userProducts = user.products().filter("user_id", user.id);https://stackoverflow.com/questions/12986700
复制相似问题