0

JSONファイルのデータが入力されたリストを表示したいのですが。変更したアダプターを使用します。これまでのコードは、テストjsonファイルへのパスを含みます(FIXTURESを使用せずにヘルプが必要なため)

Ember-Dataを使用して結果をプッシュする方法がわかりません。私はおそらくまだEmber-Dataのいくつかの概念を取得していないことを知っています。

私の質問は、次のコードに基づいてJSONファイルからリストを取得するにはどうすればよいですか。

JavaScript

    App = Em.Application.create();

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

    App.adapter = DS.Adapter.create({

        findAll: function (store, type) {
            console.log('finding');
            var url = type.url;
            $.getJSON(url, function(data) {
                store.loadMany(type, data);
            });

        }

    });

    App.Person = DS.Model.extend({
        fName: DS.attr('string'),
        surname: DS.attr('string'),
        url: 'test.json',
    });
    App.personController = Ember.ArrayController.create({
        content: [],
        init: function(){
            this._super();// create an instance of the person model
            this.set('person', App.store.findAll(App.Person));
        },
    });

HTML

<script type="text/x-handlebars">
   {{#each App.personController}}            
        <p>{{fName}} {{surname}}</p>
    {{/each}}
</script>

編集

@pauldechovの推奨事項に関するjsfiddleのコードを更新しましたが、まだ運がありません。

test.jsonのコンテンツは次のとおりです。これにより、アプリ全体を再作成できます。

   [{"name": "Bruce","surname": "Banner"}, 
   {"name": "Peter","surname": "Parker"},
   {"name": "Natasha","surname": "Romanoff"},
   {"name": "Steve","surname": "Rogers"},
   {"name": "Tony","surname": "Stark"}]
4

2 に答える 2

0
  • urlプロパティは次のように定義する必要があります。

    App.Person = DS.Model.extend({
        fName: DS.attr('string'),
        surname: DS.attr('string'),
    }).reopenClass({ url: 'test.json' });
    

    ...クラス変数ではなくインスタンス変数として(例:https ://github.com/emberjs/data#findを参照)。定義した方法(または、.reopen({...})の代わりに使用する場合は.reopenClass({...})、type.urlではなく(特定の)person.urlを介してアクセスできます。

  • ちなみに、jsfiddleのリソースに.jsonファイルを追加することはできません。アクセスできなくなります。test.jsonの完全なURLをクエリすると、クロスドメインの問題が発生しました。

  • モデルをApp.adapterの上、App.storeの上に配置する必要がある場合があります。それでも失敗する場合は、これを試してください。

  • 周辺の観察:test.jsonの「name」とコードの「fName」?

于 2012-08-12T16:17:12.060 に答える
0
App.personController = Ember.ArrayController.create({
    content: [],
    init: function(){
        this._super();// create an instance of the person model
        this.set('person', App.store.findAll(App.Person));
    },
});

なぜ設定するのpersonですか?設定しないでcontentください?

于 2012-10-02T13:27:51.100 に答える