Ember.js: Ember.ObjectをネイティブJSオブジェクトに変換するパブリックAPIがない理由はありますか?

作成日 2015年04月13日  ·  10コメント  ·  ソース: emberjs/ember.js

私はこれをたくさん必要としていることに気づき、なぜこれがフレームワークに追加されなかったのかについての根拠があるのだろうかと思います。

ユースケースは豊富で明白だと思います。 Ember.Objectは、多くのメタデータと追加のプロパティをプレーンオブジェクトに追加するため、オブジェクトのプロパティを反復処理する汎用関数を使用してオブジェクトを操作する場合、これらのプロパティは実際に邪魔になります。

Needs Submitter Response

最も参考になるコメント

pojoが必要な最大の理由は、サードパーティのライブラリサポートのためです。 Datatables、jstreeなどはすべて、プレーンなjavascript配列とオブジェクトを想定しており、残り火のデータ構造で爆発します。

全てのコメント10件

フレームワークをどのように使用しているかによると思います。 私は個人的にこの必要性を見つけたことがありません。これが必要だと想像できるのはオブジェクトのシリアル化のためだけで、私はember-dataを使用しているので、必要性は関係ありません。

そうは言っても、もし私がこの問題を抱えていたら、私はEmber.ObjectProxyを使うことから始めて、それがどれだけ私を導いたかを見るでしょう。 次に例を示します。http

オブジェクトのプロパティを反復処理するジェネリック関数

これがhasOwnProperty目的です

お気軽にEmber.keys 、多かれ少なかれObject.keys

Ember.keys(Ember.Object.create({ foo: 1 }))
>  [ 'foo' ]

そうは言っても、この問題が発生した場合は、Ember.ObjectProxyを使用することから始めて、それがどこまで進んだかを確認します。 次に例を示します。http

私はおそらくこれに反対することをお勧めします、なぜpojo直接使用しないのですか?

@stefanpennerそれは本当にOPの質問だと思います。 私は彼がプロパティ/関数/オブザーバーなどを計算したクラスを持っていると思っていたと思います。 Ember.keysで繰り返すことだけを考えていなかったので、クラスの内容が含まれると思いました(当時はそうだったと誓います)が、含まれていないことに驚きました。

好奇心から、なぜEmber.ObjectProxy使用をお勧めしませんか?

編集:明確にするために、 Ember.keysソリューションははるかにクリーンで、私の投票を得ます。 特にObjectProxyについて否定的な考えがあったら、興味がありました。

emberオブジェクト(変更された値の有無にかかわらず)を作成するために使用された元の「ハッシュ」構造を抽出するためのいくつかの戦略があります。私の質問は主に、一般的なEmber.jsコミュニティがこれを必要とする頻度についてでした。 .nativeCopyメソッドはEmber.Objectで本当にいいでしょうが、APIの追加で非常に選択的である必要があることを感謝します。 非常に一般的な操作をより便利にするメソッドを追加することが理にかなっている場合もあれば、そうでない場合もあります。 私ほど頻繁にこのニーズに人々が遭遇することはないと感じています。

具体的な例の1つは、興味がある場合は、 Ember.Objectを使用して「CreateNew […]」フォームをバックアップすることです。 おそらく、作成フォームはアイテムのリストのすぐ下にあります。 this.store.createRecordを使用して、フォームを裏付ける空白のモデルを作成すると、すぐに上のリストに新しいアイテムが追加され、フォームに入力するときに値が入力されます。 これを避けるために私が作成することがありますEmber.Objectフォームをバックアップするために、その後私はに渡す一つずつから値を取得する必要がcreateRecord

Ember.Copyable実装するのはとても面倒なので、私がこれを頻繁に行う最後の理由は、ディープコピーを作成することです。 私はEmber.Copyableのデザインが好きですが、正気のデフォルト/ジェネリック実装は本当に素晴らしいでしょう。

pojoが必要な最大の理由は、サードパーティのライブラリサポートのためです。 Datatables、jstreeなどはすべて、プレーンなjavascript配列とオブジェクトを想定しており、残り火のデータ構造で爆発します。

@ccarterc like、eg localforage.setItem-これは、Ember.Objectを使用したPITAです。
今日それに直面し、そのためにカスタムの「エスケープ」を配置する必要がありました。

今日、この正確なニーズに遭遇しました。 @ccartercが言ったように、これはPOJOを期待しているサードパーティのライブラリにとって非常に重要です。 これを行うための「公式の」方法があると便利です。

POJOを操作できるようにしたいので、オブジェクトをサードパーティのバニラJSライブラリに送信できます。

はいお願いします-サードパーティのAPIのために今これに苦労しています。 私の現在の回避策は、約70個のフィールドの配列を持つオブジェクトに対してgetPropertiesを実行することです。 これはばかげているようで、それを行う機能があると素晴らしいでしょう...

このページは役に立ちましたか?
0 / 5 - 0 評価