Ember-data return 单个 json 对象 store.find

Ember-data return a single json object with store.find

这可能吗?我知道我能做到:

this.store.find('model', 1) 

但这不是我想要的。我想以这种格式检索 json:(如果我在这样的路线中检索它,则工作):

App.OptionsRoute = Ember.Route.extend({
model: function () {
    return {
        "options":{

            "id": "1",
            "headline": "A Headline",
            "results": [

                {
                    "id": "1",
                    "title": 'Option 1',
                },
                {
                    "id": "2",
                    "title": "Option 2"
                }
            ]
        }

    };
}
});

选项型号:

App.Options = DS.Model.extend({
headline: DS.attr(),
results: DS.attr()
});

options.hbs

    <h5>{{options.headline}}</h5>

    {{#each item in options.results}}
        <h5>{{item.title}}</h5>
    {{/each}}

我正在使用 RESTAdapter。那是将在该路线上检索的唯一模型。我希望能够使用 ember-data,但 store.find 需要一个数组。

你漏掉了一点。首先,您使用错误的格式进行回复。您需要自定义序列化程序。您也可以像这样使用更脏的解决方法(但它有效)。路线:

App.OptionsRoute = Ember.Route.extend({
  model: function() {
    that = this; 
    return new Promise(function (resolve, reject) {
      url = that.store.adapterFor('option').buildURL('option');
      Ember.$.getJSON(url).then(function (json) {
      body = json.options;
      correct = {
        options: [
          body
        ]
      };
      that.store.pushPayload('option', correct);
      resolve(that.store.all('option').get('firstObject'));
    });
    });
  }
});

模板:

<h5>{{model.headline}}</h5>

    {{#each item in model.results}}
        <h5>{{item.title}}</h5>
    {{/each}}

应用输出:

A Headline
Option 1
Option 2

Working demo - 请注意,我正在使用 $.mockjax 从服务器重新创建您的响应,但它与您提供的格式相匹配。