0

localstorage を使用して「has Many」関連付けを機能させようとしています。User と Products の 2 つのモデルを設定しました。私のユーザーは多くの製品を持っています。したい:

ユーザーが承認された後、サーバーから 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

フィルターがセットされました。ローカルストレージから製品をロードした場合にのみ発生します。その場で作成しても問題はありません。localstore に保存すると、関連付けが解除されます。

そして、ここで localstorage なしで例をセットアップします: http://www.senchafiddle.com/#J9VX6

ローカルストレージを使用: http://www.senchafiddle.com/#J9VX6#hBDkq

http://docs.sencha.com/touch/2-0/#!/api/Ext.data.association.HasManyを参照してください。

私は本当にあなたの助けに感謝します

4

2 に答える 2

1

これは既知のバグのようです。sencha touch フォーラムの私の質問にリンクがあります。

http://www.sencha.com/forum/showthread.php?173327-WebStorage-proxy-can-t-deal-with-associated-data

これはSencha Touchの次のバージョンまで解決されないと思います

于 2012-10-31T08:21:17.690 に答える
0

リチャード・チェンバースは正しい。必ずしも userProducts で load() を呼び出す必要はありません。

さらに。User モデルの idProperty が「id」(デフォルト) に設定され、hasMany アソシエーションのforeignKey が「user_id」に設定されていることを確認してください。

これで解決しない場合は、UserProducts でフィルターを使用してみてください。

var userProducts = user.products().filter("user_id", user.id);
于 2012-10-31T01:39:02.773 に答える