0

ほとんどの Emberist が知っているように、私は現在、EmberJS が持っているこの垂直の壁を克服して、楽園のピークに到達できるようにしようとしている最中です。

現時点で私が持っているものは次のとおりです。

  <script type="text/x-handlebars" data-template-name="dogs">
    <h2> Pick a stack to view its cards </h2>
    <ul class="nav">
      {{#each model}}
      <li>{{#linkTo 'dog' this}} {{name}} {{/linkTo}}</li>
      {{/each}}
  </script>

私のルートは次のように定義されています:

App.Router.map(function(){
this.resource('dogs);
this.resource('dog', '/:dog_id');
});

したがって、DogRoute の Model フックは次のように定義されます。

App.DogRoute = EmberRoute.Extend({
   model: function(params){
   return App.Dog.find(params.id);
   }

});

最後に、モデル自体は非常に基本的なものです。

App.Dog = DS.Model.extend({
    name = DS.attr('string')
});

私の場合、DS は一連のフィクスチャであるため、わざわざこれを書き留めるつもりはありません。ただし、これは機能せず、その理由はわかりません。これは、犬のルートにアクセスしたときに発生し続けるエラーであり、犬へのリンクがレンダリングされることを期待しています。

ember-...rc.5.js (356 行目) キャッチされない例外: ルートの動的セグメントよりも多くのコンテキスト オブジェクトが渡されました: 犬

ここで何が間違っているのか誰でも指摘できますか?

注: 動的セグメントを削除して、犬のハンドルバー内に犬のルートを単純にレンダリングすると (これはハンドルバーから削除されます)、リンク (犬の名前) がレンダリングされます。ただし、これらのルートは、ember/handlebars によって自動生成された一意の ID を持つハイパーリンクだけでなく、動的なセグメントである必要があります。

4

2 に答える 2

3

ルーターの宣言が間違っています。それは私にもっとこのようにすべきです:

App.Router.map(function() {
  this.resource('dogs');
  this.resource('dog', {path: '/:dog_id'});
});
于 2013-06-17T03:25:27.943 に答える
1

あなたが得るエラー

ember-...rc.5.js (356 行目) キャッチされない例外: ルートの動的セグメントよりも多くのコンテキスト オブジェクトが渡されました: 犬

ルート マッピングに関連している可能性があります。次のようにルートを定義する必要があります。

App.Router.map(function() {
  this.resource('dogs', function() {
    this.resource('dog', {path: '/:dog_id'});
  });
});

さらに、これは ember のデフォルトの動作であるため (ここの動的モデルを参照):

App.DogRoute = EmberRoute.Extend({
  model: function(params){
    return App.Dog.find(params.id);
  }
});

明示的に定義する必要はないので、削除できます。残りの継ぎ目は、私が見る限り正しいようです。また、動作するjsbinをまとめました。見てください。

それが役に立てば幸い。

于 2013-06-17T10:02:36.310 に答える