2016-12-01 4 views
0

ローカルストレージにオブジェクトの配列があります。私は "toSync = true"でマークされているときにサーバーと "同期"したいと思う。

だから私はobj.toSync==trueforEach私はobj.toSync=falseを設定し、すべてがうまくと$localStorageに更新され、成功コールバックで$http.putを行うに保つために、私の配列をfilter。またはが..変更された可能性があるいくつかの他のフィールドと置くために、サーバ応答ので

大丈夫だった、私は前obj.toSync=falseangular.merge(obj, rsp.data)を行うには、成功コールバックを変更しました。

angular.mergeobj$localStorageで更新されていません。もちろん、私は明示的にそれを再び格納することができますが、なぜ$localStorageを一連の関数に渡す前に理解したいでしょうか。

angular.merge「参照」objに変更している場合は多かれ少なかれです。

答えて

0

$localStorageは、現代のすべてのブラウザで見つけることができるデータベースであるローカルストレージからオブジェクトを返します。

このデータベースはすべてを文字列として保存します。これらのデータは、あなたが目的を果たさない限り変更されません。オブジェクトが更新されるたびにlocalStorageを更新するしかありません。

+0

あなたはコードの中で、 '$ localStorage'に明示的に追加/置き換えられる 'SetXyz(id、object)'があります。実際にはすべての「同期」がオブジェクト自体によって行われるため、それは私を悲しくします。これで '$ localStorage'を第3のパラメータとして' sync'関数に渡す必要がありました(あるいはすべてをサービスに移動してオブジェクトを貧血にする必要がありました)。とにかくありがとう –

+0

@Anonymous意味貧血は何ですか? (英語以外のスピーカーはこちら)。 btw、質問/回答に合わせてタイトルを更新しました –

+0

@ Jean-Philippe、By _anemic_彼らはまったく行動していないという意味で、データ(akka DTO)のみを含んでいます。 –

関連する問題