0

hasMany リレーションシップをプライマリ モデルから保存する際に奇妙な問題が発生し、アドバイスを求めています。

私のセットアップ: Ember : 1.11.0-beta.1+canary.48e11592 Ember Data : 1.0.0-beta.14.1 EmberFire : 1.3.2 jQuery : 1.11.2

関係 (疑似): customer hasMany widgets widget belongsTo customer

addRelatedWidget: function() {
  var data = this.get('addWidget');
  var model = this.get('model');
  var widget = this.store.createRecord('widget', {
    name: data.name.trim(),
    _time: new Date().getTime(),
    customer: model,
  });
  widget.save().then(function(widget){
    model.save();
  });
  this.set('addWidget', {
    name: ''
  });
}

症状: 上記のように、カスタマー ビューからウィジェットを追加して保存を永続化すると、追加している Chrome ブラウザーに、新しく保存されたウィジェットの 1 つのインスタンスが正しく表示されます。FireBase のデータは新しいウィジェットを正しく表示しており、期待どおりに顧客に結合されています。しかし、他のブラウザー ウィンドウを開いている場合 (別のクロム、シークレット ウィンドウ、またはサファリであるかどうかは関係ありません)、関連するウィジェットのリストに 2 つのバージョンのウィジェットが表示されます。

Chrome で Ember Developer Toolbar を使用してデバッグすると、同じオブジェクトの 2 つのインスタンスが表示されます - 同じ ID、同じ ember モデル:

<ember-app@model:widget::ember1553:-JggK7ByZqaNhrJ4PJyq>
<ember-app@model:widget::ember1553:-JggK7ByZqaNhrJ4PJyq> 

Ember ツールバーの DS.model.tab タブからシリアル化されたモデルを確認するには:

Ember Inspector ($E):  Object {_time: 1422377911584, customer: "12", name: "Adding", id: "-JggK7ByZqaNhrJ4PJyq"}

Ember Inspector ($E):  Object {_time: 1422377911584, customer: "12", name: "Adding", id: "-JggK7ByZqaNhrJ4PJyq"}

それらは、モデルのまったく同じインスタンスの 2 つの完全な複製であるように見えます。

そのため、これをデバッグできませんでした。firebase のデータではなく、動作中のブラウザが正常に表示されるので、1.9 の新しい HTMLBars テンプレート エンジンではないかと思います...イベントを誤って処理する emberfire でさえあるのでしょうか?

firebase の関連モデル データは -primary-key: true によって格納されているため、関連モデルの 2 つのインスタンスを同じ配列に持つことはできないと思うので、それが emberfire であるとは思えません ...

これのデバッグを開始する場所について誰かが私を案内できますか?

ありがとう

4

1 に答える 1

0

Per Kato: Sara はバージョンの非互換性であると投稿しましたが、彼女は正しいです。EmberFire は Ember > 1.9.1 に対応していませんが、1.9.1 は期待どおりに動作します :)

于 2015-01-30T17:23:31.343 に答える