0

以下に示すようなルートを持つjsfiddleがあります。これはemberjs ガイドのものとまったく同じで、 {{post.title}}に添付された#linkTo ヘルパーをクリックすると、個々の投稿が表示されるはずですが、代わりに、コンソールに次のエラーが表示されます。

キャッチされないエラー: アサーションが失敗しました: 未定義のオブジェクトで 'id' を使用して get を呼び出すことはできません。

また、ホームページの投稿リンクをクリックすると、すべてのタイトルが表示されますが、コンソールには次のエラーも表示されます。

不明なエラー: ビューがレンダリングされた後、DOM に挿入される前に、ビューが再レンダリングされました。

EmBlog.Router.map(function() {
  this.resource("posts", function(){
    this.route('show', {path: '/:post_id'}) ;
  });
});

emberjs ガイドと同じテンプレート

<script type="text/x-handlebars" data-template-name="posts/index">
  {{#each post in content}}
    <p>{{#linkTo 'posts.show' post}} {{post.title}}  {{/linkTo}}</p>
 {{/each}}
</script>

{{linkTo}} のパラメーターとして文字列リテラルのサポートを追加したこのコミット、特にそのコミットからの以下の提案を確認しました。

現在、Ember では文字列リテラルを引数として指定できます。{{#人気のある投稿へのリンク}}は、現在のコンテキストで「人気のある」プロパティを検索し、その ID を持つモデルを指す URL を生成します。{ #linkTo post "popular"}}は、文字列リテラル "popular" をモデルとして扱います。

4

1 に答える 1

2

唯一の問題は、posts/show テンプレートの linkTo posts.edit ヘルパーにコンテキストを渡すのを忘れたことのようです。

<script type="text/x-handlebars" data-template-name="posts/show">
  <h1>Post</h1>
  <p>Your content here.</p>
  <h3> {{title}} </h3>
  <h3> {{body}} </h3>
  <br/>
  <p> {{#linkTo 'posts.index'}} back {{/linkTo}}</p>
  <p> {{#linkTo 'posts.edit' content}} Edit the post  {{/linkTo}}</p>  
</script>

これが機能するフィドルです。ところで、私は少し片付けましたが、役に立たないように思われるものもありました。

http://jsfiddle.net/rxWzu/9/

于 2013-01-20T16:57:39.170 に答える