1

私は Ember、Ember-data、Rails を使用しています。

ハンドルバー ビューでリンクを作成すると、/clinic/undefined にリンクします。View コードで次のようなリンクを作成しようとしていますhttp://localhost:3000/#/clinic/1が、代わりに次のようになります: http://localhost:3000/#/clinic/undefined

それを修正する理由と方法はありますか?

意見:

<a {{action showClinic content.clinic href=true}}>Click here</a>

ルーター:

root: Ember.Route.extend({
showClinic: Ember.Route.transitionTo('clinic'),
showDoctor: Ember.Route.transitionTo('doctor'),

index: Ember.Route.extend({
  route: '/',
  connectOutlets: function(router) {
    router.get('applicationController').connectOutlet('main');
  }
}),

clinic: Ember.Route.extend({
  route: '/clinic/:clinic_id',
  connectOutlets: function(router, clinic) {
    router.get('applicationController').connectOutlet('clinic', clinic);
    router.get('clinicController').connectOutlet('doctors', clinic.get('doctors'));
  }
}),

doctor: Ember.Route.extend({
  route: '/doctor/:doctor_id',
  connectOutlets: function(router, doctor) {
    router.get('applicationController').connectOutlet('doctor', doctor);
  }
})

}))

モデル:

App.Doctor = DS.Model.extend({
  name: DS.attr('string'),
  clinic: DS.belongsTo('App.Clinic')
});

JSON:

{
  doctor: {
    id: 1,
    clinic_id: 1,
    name: "Dr. Who"
  }
}
4

1 に答える 1

1

これは私にも起こりましたが、おそらくルーターでのシリアライズとデシリアライズに関連する問題です。id を逆シリアル化しているときに診療所のデータがまだ読み込まれておらず、id 属性の戻り値が undefined である。これに対する解決策は、各状態の deserialize メソッドで promises パターンを実装することです。

詳細については、次のリンクをご覧ください: https://github.com/emberjs/ember.js/issues/1268#issuecomment-7893886 - promises パターンの実装。

Emberjs 非同期ルーティング- 詳細と別の代替手段について

于 2012-11-01T05:35:56.950 に答える