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
从服务器重新创建您的响应,但它与您提供的格式相匹配。
这可能吗?我知道我能做到:
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
从服务器重新创建您的响应,但它与您提供的格式相匹配。