1.13でjsオブジェクトをモデル配列に動的に追加する質問する

1.13でjsオブジェクトをモデル配列に動的に追加する質問する

次のコードがあります:

var msg = this.store.createRecord({text:'first title', createdAt: "2015-06-22T20:06:06+03:00" })

this.get('model.content').pushObject(msg);

msg.save();

新しいレコードを作成します。次に、それをモデルにプッシュして表示します。バージョン 1.9 では問題なく動作しましたが、最新の 1.13 にアップグレードすると、動作が停止し、次のエラーが表示されます。

TypeError: internalModel.getRecord は関数ではありません

いくつかの調査の後、私はこの解決策にたどり着きました

this.get('messages.content').unshiftObject(message.internalModel);

それは部分的には役に立ちます。今、私は2つの問題を抱えています:

  • プライベートエンバーデータAPIを使用するのが良いアイデアかどうか自信がありません
  • モデルにレコードを追加してから画面にレンダリングするまでに、煩わしい遅延があります。さらに、msg.save() を呼び出さなければ、レコードはレンダリングされません。したがって、私が理解している限りでは、サーバーからの応答があるまで待機し、その後にレンダリングするだけです。ただし、逆の動作が必要です。最初にレコードを表示してから保存する必要があります (ユーザーに保存状態を表示します)。この方法では、すべてが非常に高速に行われるとユーザーに思われます。

ベストアンサー1

プライベートAPIに頼らない解決策としては、toArray()githubの問題):

var array = this.get('messages').toArray()
array.addObjects(this.get('messages'))
array.addObject(msg)
this.set('messages', array)

おすすめ記事