2016-07-15 4 views
2

基本的には、私のデータのコピーを取得するために、Object.assignを実行したいと思います。過去にAngularJSがアタッチされていなくても、現在アタッチしているか、または将来のバージョンでアタッチする可能性があります。AngularJSを使用するときに `Object.assign`を実行する安全な方法は何ですか?

私は代入後にのようなプロパティを削除することができますが、このアプローチは完全に壊れやすい一方、私は手作業で目的のフィールドを持つオブジェクトを構築できますが、これは面倒です(そして、私のソースオブジェクトの定義)。

中間に何かがありますか?

+0

あなたはこの「データ」とは何かを説明していないし、AngularJSが「何か」をどのように付けているのかについては説明していない。これが問題の最も重要な部分であると言わなければならないのでしょうか? – estus

+0

@estusの場合、dataは任意のオブジェクトですが、Angularのコンテキストで使用すると、モデルとして使用すると、データ+角データが添付されて終了することがあります。だから後でそれをコピーすると、 '$$ hashKey'のようにAngular添付フィールドもコピーされます。 – greenoldman

+0

可能な複製http://stackoverflow.com/questions/32344495/remove-hashkey-from-array – estus

答えて

3

に有用であるように思わ、それは一種の一つです。

角型オブジェクトヘルパーのすべてare aware of this property and remove it at the end of the operationangular.extendは、Object.assignの直接角度対応であり、代わりに使用する必要があります。

+0

ありがとう!現在の状態を記述している「その他のプロパティはありません」に関しては、将来他のプロパティが存在しないことやそれ以上の保証はありません。 – greenoldman

+0

@greenoldman $$ hashKeyは、フレームワークの子供時代のものです。互換性の理由からまだそこにあり、列挙可能であると思われます。チームはこれをやり直すには十分な資格があります。いずれにしても、内部を考慮するために 'angular.extend({}、...) 'に固執してください。 – estus

1

angular.copy$$hashKeyなど、他のプロパティはありません。この場合

+0

ありがとうございます。違いはありますが、 'angular.copy'はディープコピーですが、' Object.assign'は浅いコピー。 – greenoldman

関連する問題