值显示为[object]ember.js
我正在尝试为模型设置属性,但嵌套对象时遇到问题。这是我的值显示为[object]ember.js,ember.js,Ember.js,我正在尝试为模型设置属性,但嵌套对象时遇到问题。这是我的 App.Posts = DS.Model.extend({ title: DS.attr('string'), author: { name: DS.attr('string') }, date: DS.attr('date'), excerpt: DS.attr('string'), body: D
App.Posts = DS.Model.extend({
title: DS.attr('string'),
author: {
name: DS.attr('string')
},
date: DS.attr('date'),
excerpt: DS.attr('string'),
body: DS.attr('string')
});
我该如何声明author对象
在余烬检查器中,当我转到“数据”和“App.post”下并选择其中一行时。它有一个属性App.Post,属性author:{name:[Object]}
以下是从余烬文档中调整的JS Bin链接,如下所示:
App.Post = DS.Model.extend({
title: DS.attr('string'),
author: DS.belongsTo('author'),
date: DS.attr('date'),
excerpt: DS.attr('string'),
body: DS.attr('string')
});
App.Author = DS.Model.extend({
post: DS.belongsTo('post')
})
在没有余烬数据的情况下,余烬工作得非常好。让我们假设我们要使用余烬数据: 余烬数据的记录应该是平的。这意味着所有属性都位于顶层。如果你有一个相关的数据,它们通常存在于不同的记录中。如果您试图嵌入该记录,则需要查看嵌入记录的复杂世界()。至少这些相关记录必须定义一个id。下面是一个从服务器返回的数据的示例
{
posts:[
{
id: '1',
title: 'My name is Django.',
author: {
id:1,
name: 'D name'
},
date: new Date('08-15-2014'),
excerpt: 'The D is silent.',
body: 'The D is silent.'
},
{
id: '2',
title: 'White horse',
author: {
id:2,
name: 'horse name'
},
date: new Date('08-15-2014'),
excerpt: 'Is what I ride.',
body: 'My horse likes to dance.'
}
]
}
代码
例如:
另一个小提示是,在处理路由时,您不想使用globals,您可以使用modelFor
从不同的路由获取模型
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('post');
}
});
App.PostRoute = Ember.Route.extend({
model: function(params) {
var posts = this.modelFor('posts');
return posts.findBy('id', params.post_id);
}
});
就我个人而言,我认为余烬的数据是矫枉过正的。Ember与POJOs配合得非常好。如果您需要缓存和回滚功能,那么余烬数据可能是一个很好的解决方案
示例:这并没有解决问题。您需要共享更多信息,比如jsbin演示问题或代码存储库。这个问题可能存在于代码的其他地方。你真的打算使用余烬数据吗?我只是想浏览一下教程。还有别的方法吗?
App.PostsRoute = Ember.Route.extend({
model: function() {
return this.store.find('post');
}
});
App.PostRoute = Ember.Route.extend({
model: function(params) {
var posts = this.modelFor('posts');
return posts.findBy('id', params.post_id);
}
});