3

私は ember-data で Ember.js を試しており、次のアプリケーションが定義されています。

window.App = Ember.Application.create()

App.store = DS.Store.create
    revision: 4
    adapter: DS.RESTAdapter.create { bulkCommit: false }

App.Source = DS.Model.extend
    # options
    primaryKey: '_id'

    # fields
    name: DS.attr 'string'
    raw_text: DS.attr 'string'

App.sourcesController = Ember.ArrayProxy.create
    content: App.store.findAll App.Source

App.ListSourcesView = Ember.View.extend
    templateName: 'app/templates/sources/list'
    sourcesBinding: 'App.sourcesController'

そのテンプレートは次のようになります。

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        {{#each sources}}
        {{view App.ShowSourceView sourceBinding="this"}}
        {{/each}}
    </tbody>
</table>

ページを読み込もうとするとApp.ListSourcesView、ember-data.js で次のエラーが表示されます Uncaught TypeError: Cannot read property 'map' of undefined

私は自分が何を間違っているのか理解できず、この場合、ソースを読んでも混乱は解消されません。誰かがこれを経験したことがありますか、または私が間違って定義した/定義していないものを教えてもらえますか?

4

3 に答える 3

2

おそらく私がここで遭遇したのと同じことです。要するに、ember-dataは、リソースリストがリソース名の下にネストされることを想定しています。たとえば、/ users /を取得した場合、結果は{ "users": [] }トップレベルの配列ではなく、である必要があります[]

于 2012-05-24T16:31:58.330 に答える
0
App.sourcesController = Ember.ArrayProxy.create
     content: []

App.ListSourcesView = Ember.View.extend
     // I don't believe you can use file paths in this way
     // Use a script tag with a  data-template-name as shown in the docs.
     // If you really need them from a file, then you will need to compile the templates
     // Yourself. There's plenty of SO Questions re: this.
     templateName: 'source-list'
     sourcesBinding: 'App.sourcesController'

// Always access ember object properties through the get and set interfaces.
// This will ensure that views get the proper notifications when props change.
App.sourcesController.set("content", App.store.findAll App.Source);

これがうまくいかない場合はお知らせください。

于 2012-05-03T05:50:41.060 に答える
0

github master の ember/ember-data を使用していますか? これは、過去数か月にわたって一部のバージョンに互換性がなかったことが原因です。master を両方に使用すると、エラーはなくなりました(他の多くのバグとともに)。

于 2012-04-27T23:37:54.680 に答える