問題タブ [ember-data]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ember.js - Ember データ: findAll の適切な使用方法
https://github.com/emberjs/dataを参考に、ember-data を使おうとしています。
具体的には、配列コントローラーを使用して、データベース内のすべての「Person」オブジェクトを表示しようとしています。また、ユーザーが新しい「人」を作成できるようにしたいと考えています。
私は動作する次のコードを持っています:
ただし、新しい人が作成されるたびに content プロパティをリセットするのは効率が悪いようです。最後の行を削除して、コードを次のように変更すると:
newPerson 呼び出しのたびに新しいビューが作成されますが、同じオブジェクトが複製されます。基本的に何が起こっているかというと、新しいテンプレートはすべて、毎回新しいオブジェクトではなく、最初に作成されたオブジェクトを使用します。これは次のバグに関連していると思います: https://github.com/emberjs/data/issues/11。
参考までに、私のテンプレート ロジックは次のとおりです。
コードの 2 番目のバージョン (行のあるバージョン) を使用すると、@set('content', App.store.findAll(App.Annotation))
すべての Person オブジェクトに対して clientId が複製されます。最初のバージョンでは、クライアント ID は正しいです。
誰かがここで光を当てることができますか? 私はこれを正しくやっていますか?私の本能はこれがバグだと言っていますが、よくわかりません。
ember.js - EmberJS、EmberJS / Data、Sproutcore-データストア
SproutCore 2.0からEmberJSへの移行に伴い、名前空間とGithubリポジトリの移行が行われました。コアとなるものはhttp://github.com/emberjs組織のGithubアカウントに移動したようですが、「addons」アカウントhttp://github.com/emberjs-addonsに移動したように見えるものもあります。
私は現在、JSONを提供するRESTfulサーバーで使用するためにEmberJSを調査しています。
私の質問は次のとおりです。新しいhttp://github.com/emberjs/dataコードを使用しますか、それとも古いhttp://github.com/emberjs-addons/sproutcore-datastoreコードを使用しますか?前者を想定しますが、古いSproutCore「アドオン」で何が起こっているのかを確認するだけでなく、いくつかの説明を取得したいと思います。
ember.js - 残り火データ-レコードを更新する方法
sinatrajson-appと通信するember-dataを使用してコードを実装しました。メソッドfindAllは期待どおりに機能し、レコードをロードします。また、DS.Store.createにupdateRecordメソッドを実装しましたが、更新とコミットの方法がよくわかりません。ここのコードを参照してください(簡潔にするために、jquery関数は含めませんでした):http://pastie.org/3197008
私は次のことを試しました:
しかし、次のエラーが発生します。TypeError: Object (subclass of DS.State) has no method 'enter'
レコードを更新するにはどうすればよいですか?または、更新のために何かを実装するのを忘れましたか?
前もって感謝します!
ember.js - Ember と Ember-data を使用: ストアの読み込みが完了したとき、および/または関連付けられたビューの再レンダリングが完了したときにコールバックを設定する方法は?
Ember と Ember-data を使用して、カスタム アダプター内で findAll 呼び出しを使用して、REST API から数百のオブジェクトを読み込みます。findAll を参照する ArrayController.content があり、最近追加された Ember.Selectを使用して、選択ウィジェット/ドロップダウン メニューにオブジェクトを表示します。すべてのオブジェクト (各オブジェクトは選択のオプション) で完全にレンダリングされたら、選択ウィジェットで関数を実行する必要があります (特に、Chosen.js ライブラリ) 。
select 内の数百のオブジェクトを処理するには少し (2 ~ 4 秒) かかるため、イベント Ember.Select.didInsertElement および Ember.ArrayController.contentDidChange でコールバックを使用してもうまくいきません。どちらも発砲が早すぎます。では、代わりに使用できる別のイベントまたは別のアプローチはありますか?
javascript - EmberJS/Dataとの関連付けの代替
私は約1週間EmberJSアプリケーションに取り組んでおり、データの永続性を可能にするために、EmberJS/Data用の独自のlocalStorageアダプターを作成しました。アプリは小さなメモを取るアプリケーションです。理想的には、多くのNoteモデルが関連付けられているNotebookモデルが必要です。
ただし、これを実行して可変配列を作成する方法は見つかりませんでした。hasManyリレーションを「実装」することはできますが...
... hasManyメソッドによって作成されたModelArrayは、EmberJSでは不変です。これは現在作業中のようです-ここにEmberJS/Dataの「関連付け」ブランチがあります-しかし、ModelArrayを変更することは、このアプリケーションにとって重要です。つまり、新しい注を作成します。
EmberJS / Dataの最新のコミットには配列の可変性が含まれていますが、それでもいかなる種類の監視もありません。変更が行われたときにアダプターに通知されず、保存されません。
私は疑問に思っています:この機能がEmberJS / Dataに追加されるまで、hasManyアソシエーションの最良の代替手段は何ですか?ノートブックモデルにある種のフェッチ/取得インターフェイスを備えたノートID配列を使用するなど、さまざまなパターンを調べてきましたが、まったくどこにも行き着きませんでした。私はこれを行うための最良の方法を見つけようとして今日のかなりの部分を費やしました、そして私が持っているのはたくさんの欲求不満だけです。
javascript - ember-dataを使用した非CRUDアクション
次の残り火データモデルがあるとします。
これは、次のかなり標準的なCRUDAPIを使用してRailsアプリと通信します。
これはすべて、標準のStore/Adapterを使用してEmber-Dataにマップされます。
ただし、人を「スター」または「スター解除」するために、APIでは標準の更新アクションではこれを実行できないとしましょう。このアクションには特定のAPIエンドポイントがあります。
このAPIをEmberDataに適合させるにはどうすればよいですか?
どういうわけかDS.StoreとDS.RESTAdapterを拡張する必要があるようですが、これらのさまざまなアクションを認識させるための最善の方法がわかりません。また、アプリの汎用アダプターが主演者を認識している必要があることも少し間違っていると感じています。
POST /people/id
私はAPIを制御できないため、標準の更新に適合するように「スター付け」を認識できないことに注意してください。
ember.js - Ember Data と関係を使用した部分ロード
いくつかの Ember Data モデルを管理する XMPP パーサーを作成しようとしています。情報は非同期で入ってくるので、私の知る限り、アダプターのパターンにはうまく収まりません。ちょっとした情報が得られるケースが多く、これをもとにモデルを部分的にアップデートしたい。
たとえば、プレゼンス メッセージが届いた場合、ステータスの履歴を作成できるようにこれを保存したいのですが、この新しい情報で連絡先を見つけて更新したいと考えています。連絡先には、プレゼンスとは関係のない他の多くの属性がある場合があります。連絡先とプレゼンス モデルの間には 1 対多の関係があります。
現時点では、次のようなコードがあります。
新しいプレゼンス メッセージが届いたときに、連絡先が存在しない場合は作成され、load メソッドを使用して関係が正しく構築されます。ただし、プレゼンス レコードを present_history に追加したい場合、使用set
は機能しません。興味深いことに、set
Presence 側を扱うときに機能します。
私はそれが可能であることを発見しました:
これによりオブジェクトが追加されますが、オブザーバーの更新はトリガーされません。
私は何を間違っていますか?
asynchronous - ember-data でのデータの非同期ロード
私は ember-data に基づいてアプリケーションを作成しています。それはすべてのデータを非同期的にロードします。ただし、didLoad
関数は が使用されるまで呼び出されませんfind
。例えば:
...アラートをトリガーせfindAll
ず、モデルを返しません。ただし、実行すると:
関数がトリガーされ、didLoad
で見つけることができますApp.Store.findAll(App.Thing)
。
どうしたの?
ember.js - Ember のさまざまなデータ ストア コンポーネントを評価するにはどうすればよいですか?
ここ数日間の読書で、Ember のデータ ストア サポートを提供する少なくとも 3 つの異なる拡張機能を見つけました: ember-data、sproutcore-datastore、ember-ezdata。
このオプションの範囲には、いくつかの疑問が生じます。
明らかに、ember-data は「公式」の拡張機能ですが、コア チームからの資格 (「これは運用の準備ができていません」) でかなり厳しく制限されています。
- これらのオプションをどのように比較して評価する必要がありますか?
- SproutCore 1.x シリーズでは、通常、開発はフィクスチャで行われ、データ ソースは後で接続されました。これらのオプションのいずれかが、そのようなワークフローをサポートできますか? 一部の運用データ (リリース バージョンによって変更される可能性がありますが、ユーザーが編集することはできません) と、バックエンド データ ソースからのその他のデータをこの方法で読み込むことはできますか?
ETA: これは関連する質問です。
ember.js - Jasmine でのテスト時に EmberData でレコードを作成する
Ember Data を使用して、Backbone アプリケーションを Ember アプリケーションに変換する作業を行っています。ブラウザでは問題なく動作しますが、Jasmine のテスト ケースはパスしません。Jasmine テスト ケースでレコードを作成しようとすると、次のエラーが発生します。
これは、エラー メッセージが指す実際のコードです。
テスト ケースが実行している実際のコードは次のようになります。
任意のアイデアをいただければ幸いです。