1

エラーが表示される

Uncaught TypeError: Object #<Object> has no method 'map' 

ember-data を使用して、API から json をロードしようとするとき。

App = Ember.Application.create({});

App.Student = DS.Model.extend({
    primaryKey: 's_id',
    s_id: DS.attr('integer'),
    surname: DS.attr('string')
});

App.Student.reopenClass({
    url: 'api/student.php'
})

App.adapter = DS.Adapter.create({
    findAll: function(store, type) {
        var url = type.url;

        console.log(type.url);

        jQuery.getJSON(url, function(data){
            store.loadMany(type, data);
        });
    }
});

App.store = DS.Store.create({
    revision: 4,
    adapter: App.adapter
});

App.students = App.store.findAll(App.Student);

JSON が正しい形式であることを確認しましたが、役に立ちません。何か案は?

ありがとう

4

2 に答える 2

0

カスタムアダプタを使用する場合は、エラーがスローされないように、App.adapterですべてのメソッド(findAll、find、createRecord、createRecordsなど)を定義するのが最適であることがわかりました。このメソッドを段階的に実装するのがアプリで何が起こっているかを制御するのに最適だと思うかもしれませんが、このようにするとデフォルトのアダプターがジャンプします。

また、json応答の正しいフォーマットを確認してください

于 2012-08-28T23:05:03.350 に答える
0

pauldechovは、上記のコメントでこれに答えました。

私は何が起こっているのか知っていると思います - DS.RestAdapter は findAll の実装で複数形を json のルートとして想定していますが、これが必要な場合は、この実装を模倣するか、その組み込みを使用/拡張する必要があります1。

json のルートには名前が付けられているため、data.student を呼び出して loadMany の呼び出しを正しく取得できます。

于 2012-08-30T08:35:12.617 に答える