13

このエラーの原因を追跡できないようです:

アサーションに失敗しました: '0' のモデルが見つかりませんでした

JSON はサーバーによってフェッチされていますが、テンプレートに送信される前にアプリでエラーが発生しています。この問題は、REST アダプターとルーターの間で発生しているようです。フィクスチャ アダプタを使用すると、テンプレートはエラーなしでレンダリングされます。

Ember と Handlebars のバージョン 1.0.0 を使用しています。

ここに私のアプリコードがあります:

window.App = Ember.Application.create();

App.ApplicationAdapter = DS.RESTAdapter.extend({
    host: 'http://localhost:3000'
});

App.Router.map(function() {
    this.resource("stories", { path: "/" }, function() {
        this.resource("boards", { path: "/boards"} )
    });
});

App.StoriesRoute = Ember.Route.extend({
    model: function() {
        return this.store.findAll('story');
    }
});

attr = DS.attr;

App.Story = DS.Model.extend({
    color: attr()
});

ハンドルバー テンプレート

    <script type="text/x-handlebars">
    {{ outlet }}

    </script>

    <script type="text/x-handlebars" data-template-name="stories">
    <ul>
        <li class="storyLine">
            <ul>
                <li id="colorSwatch"></li>
                <li class="board">+</li>
            </ul>
        </li>
    </ul>
    <ul>
    {{#each model}}
        <li class="storyLine">
            <ul>
                <li id="colorSwatch" {{bindAttr class=story.color}}></li>
                <li class="board">dddd</li>
            </ul>
        </li>
    {{/each}}
    </ul>
    </script>

ご協力いただきありがとうございます!

4

3 に答える 3

25

サーバーからの応答が正しくフォーマットされていない可能性があります。JSON には、モデルと同じ名前のルートが必要です。参照: http://emberjs.com/guides/models/the-rest-adapter/#toc_json-root 応答は次のようにする必要があります。

{
  "story": [
    {
      "id": 0,
      "title": "foo"
    },
    {
      "id": 1,
      "title": "bar"
    }
  ]
}
于 2013-09-06T05:57:42.220 に答える
0

bindAttrオブジェクトを使用しているため、ヘルパーをstory変更してそのオブジェクトを参照する必要があります。{{#each}}

...
{{#each story in model}}
  <li class="storyLine">
    <ul>
      <li id="colorSwatch" {{bindAttr class=story.color}}></li>
      <li class="board">dddd</li>
    </ul>
  </li>
{{/each}}
...

それが役に立てば幸い。

于 2013-09-05T19:50:20.420 に答える