1

これが私のjsonデータがどのように見えるかです:

[{"id":1,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"Lorem ipsum lorem ipsum lorem ipsum"}]

これが私のEmberコードです:

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

Messages.Store = DS.Store.extend({
  revision: 11
});

Messages.MessagesRoute = Ember.Route.extend({
  setupControllers: function(controller) {
    controller.set('content', Messages.Message.find());
  }
});

Messages.Message = DS.Model.extend({
  msgbody: DS.attr('string')
});

Messages.MessagesController = Ember.ArrayController.extend({
  content: []
});

問題は、私のjsonデータが/messages/ではなく/app_dev.php/messagesにあることです...

getリクエストを成功させようとしていますが、管理できません... Ember構文を理解できるように、何が間違っているのか教えていただけますか?

編集あなたの答えに感謝します。些細なことをするためにたくさんの努力をした後、私はAngularを試しました、そしてそれは仕事をより良く、より速くそしてより簡単に行うようです。だから私はフレームワークを切り替えています。

4

3 に答える 3

2

アダプタで名前空間オプションを使用することをお勧めします。これは次のように指定でき、ストアを作成するときにMyAppアダプターを使用します。

MyApp.Adapter = DS.RESTAdapter.extend({
  namespace: 'app_dev.php'
});
于 2013-02-16T01:21:33.247 に答える
1
  1. urlオプション でファイル名を指定する方が良いと思います。

    App.Store = DS.Store.extend({リビジョン:11、アダプター:DS.RESTAdapter.create({url: "/app_dev.php"})});

  2. JSONの構造は次のようになります。

{
    messages: [
        {"id":1,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"ipsum "},
        {"id":2,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"Lorem "}
    ]
}

詳細については、残り火ガイドを参照してください。

于 2013-02-16T21:58:18.807 に答える
0

Emberでは、JSONを正常に読み取るために、「タイプキー」と呼ばれるものを使用する必要があります。つまり、Emberがそのタイプであることを認識するために、オブジェクト自体の前にモデルの名前を付ける必要があります。

私の場合、Java / Springバックエンドを作成しましたが、これをオブジェクトに追加したくありませんでした。これを回避するには、EmberシリアライザーのドキュメントであるSerializerファイルを作成できます。具体的にはRESTSerializerはここにあります。

着信JSONにtypeKeyを追加するには、normalizePayloadフックをオーバーライドします。これが私がそれをした方法の例です:

normalizePayload: function(type, payload) {
    var json = {};
    json[type.typeKey] = payload;
    return json;
}

途中でtypeKeyをJSONに配置していなかった場合、データをPUTまたはPOSTするときに同様の問題が発生する可能性があるため、送信データのtypeKeyを削除するには、serializeIntoHashフックをオーバーロードする必要があります。これが私のために働いた例です:

serializeIntoHash: function(hash, type, record, options){
    Ember.merge(hash, this.serialize(record, options));
}

お役に立てば幸いです。Angularに切り替えているようです(素晴らしい決断です。EmberよりもAngular 100xの方が好きですが、私の仕事では現在Emberを使用する必要があるため、これを乗り越えています)。またはEmberの使用を余儀なくされています。

于 2014-07-08T15:30:14.223 に答える