Dou*_*gui 2 ember.js ember-data
在一个ember 1.13.3应用程序中,我有这条路线:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('skill');
}
});
Run Code Online (Sandbox Code Playgroud)
而这个型号:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
link: DS.attr('string'),
acquired_skills: DS.hasMany('users', { async: true, inverse: 'acquired_skills' } ),
searched_skills: DS.hasMany('users', { async: true, inverse: 'searched_skills' } )
});
Run Code Online (Sandbox Code Playgroud)
这是api返回的结果:
{"skills":[{"id":1,"name":"Ember","description":"JS Framework","link":null}]}
Run Code Online (Sandbox Code Playgroud)
数组是空的.我可以用它检查它,console.log(this.store.find('skill').get('length'));我有0.
怎么了?
store.find()是一个异步操作.它返回一个承诺.要访问实际数据,您必须将回调传递给promise.当从后端获取数据时,promise会解析并执行回调,并将数据传递给它:
var foo = this.store.find('skill');
console.log("typeof foo", typeof foo);
foo.then( function(result) {
console.log("result", result);
});
console.log("end of script");
Run Code Online (Sandbox Code Playgroud)
上面的代码将产生以下输出:
typeof foo,Promise
脚本
结果,Object
你正在使用JSONAPIAdapter.您显示的有效负载不符合JSON API规范.您应该更新后端以符合规范.
如果你不能,请使用RESTAdapter和RESTSerializer作为解决方法:
应用程序/适配器/ application.js中
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
host: 'http://localhost:3000',
namespace: 'api/v1'
});
Run Code Online (Sandbox Code Playgroud)
应用程序/串行器/的application.js
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
isNewSerializerAPI: false
});
Run Code Online (Sandbox Code Playgroud)
更多信息:http://emberjs.com/blog/2015/06/18/ember-data-1-13-released.html
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |