1

私は ember.js ガイドを読んで Ember を学び、最新ビルドのember.jsember-data.js、および handlebars.js を使用しています。ビューを切り替える基本的なナビゲーションを正常にセットアップできました。ただし、モデルを に統合しようとすると{{#each model}}、次のエラー メッセージが表示されます。 Uncaught TypeError: Object # has no method 'map'

多くの人が関連する質問をしたようですが、解決策は常に ember のバージョンを更新することでした。私はすでにそれを行っています。

チュートリアルに正確に従っていると思います。これまでのコードは次のとおりです。

App = Ember.Application.create();

App.Store = DS.Store.extend({
    revision: 12,
    // Says we are specifying all models in js
    adapter: 'DS.FixtureAdapter'
});

App.Router.map(function() {
    this.resource('posts');
    this.resource('about');
});

App.PostsRoute = Ember.Route.extend({
    model: function() {
        return App.Post.find();
    }
});

App.Post = DS.Model.extend({
    title: DS.attr('string'),
    author: DS.attr('string'),
    intro: DS.attr('string'),
    extended: DS.attr('string'),
    publishedAt: DS.attr('date')
});

App.Post.FIXTURES = ({
    id: 1,
    title: 'Book Title',
    author: 'Dave',
    publishedAt: new Date('12-27-2012'),
    intro: 'This is an introduction to the book',
    extended: 'This is an even longer introduction to the book'
}, {
    id: 2,
    title: 'Book Title 2',
    author: 'James',
    publishedAt: new Date('08-13-2012'),
    intro: 'This is an introduction to another book',
    extended: 'This is an even longer introduction to another book'
});

関連するマークアップ:

<script type="text/x-handlebars">
<div class="navbar">
    <div class="navbar-inner">
        {{#linkTo 'index' classNames='brand'}}Brand{{/linkTo}}
        <ul class="nav">
            <li>{{#linkTo 'about'}}About{{/linkTo}}</li>
            <li>{{#linkTo 'posts'}}Posts{{/linkTo}}</li>
        </ul>
    </div>
</div>
{{outlet}}
</script>

<script type="text/x-handlebars" id="about">
<div class="about">
<p>Here is some text about the page</p>
</div>
</script>

<script type="text/x-handlebars" id="posts">
<div class="container-fluid">
    <div class="row-fluid">
        <div class="span3">
            <table class='table'>
            <thead>
                <tr><th>Recent Posts</th></tr>
            </thead>
            {{#each model}}
            <tr>
                <td><a href="#">{{title}} <small class='muted'>by {{author}}</small></a></td>
            </tr>
            {{/each}}
            </table>
        </div>
        <div class="span9">
        </div>
    </div>
</div>
</script>

この質問のフォーマットがひどい場合は申し訳ありません - それは私の最初の質問です! 乾杯!

4

2 に答える 2

0

Try using controller instead of model to iterate over the models in an array controller.

        {{#each controller}}
           <tr>
               <td><a href="#">{{title}} <small class='muted'>by {{author}}</small></a></td>
           </tr>
        {{/each}}
于 2013-05-24T21:33:12.147 に答える