我正在开发一个像社交网络这样的小型应用程序来管理项目。现在,我正在研究网络上的友谊关系。为此,我创建了一个名为“Person”的模型,具有以下属性:
App.Person = DS.Model.extend
(
{
name: DS.attr('string'),
place: DS.attr('string'),
email: DS.attr('string'),
password: DS.attr('string'),
academic: DS.attr('string'),
professional: DS.hasMany('App.Work'),
knowledge: DS.attr('string'),
projects: DS.hasMany('App.Project'),
friends: DS.hasMany('App.Person')
}
);
现在,我试图在控制器中获取一个人的朋友列表,但我不知道如何访问它。尝试this.get('model').get('friends')
在模板中显示类似的字符串<DS.ManyArray:ember358>
。访问这个的正确方法是什么?是否应该在控制器上完成,在路由上,我应该创建一个额外的视图或类似的东西吗?
非常感谢您的帮助。
编辑:
我已经完全添加了@ArturMalecki 所说的内容,但我得到了<DS.ManyArray:ember360>
. 这就是我所拥有的:
人员控制器
App.PersonController = Ember.ObjectController.extend
(
{
friends: function()
{
return this.get('model').get('friends');
}.property('model.friends'),
}
);
路由器
App.Router.map
(
function()
{
this.resource('app', { path: '/' }, function ()
{
// Additional child routes
this.route('friends');
...
});
this.resource('person');
}
);
App.PersonRoute = Ember.Route.extend
(
{
model: function()
{
return App.Person.find();
}
}
);
App.AppFriendsRoute = Ember.Route.extend
(
{
model: function()
{
return App.Person.find();
}
}
);
车把模板
<script type="text/x-handlebars" data-template-name="app/friends">
<h1>Friends</h1>
<ul>
{{#each model itemController="person"}}
<li>{{name}}, from {{place}}. Him/her friends are <{{friends}}>
{{else}}
You've no still friends
{{/each}}
</ul>
</script>
输出
朋友们
< person1 >,来自< place1 >。他/她的朋友是<
<DS.ManyArray:ember360>
>
< person2 >,来自< place2 >。他/她的朋友是<<DS.ManyArray:ember361>
>
< person3 >,来自< place3 >。他/她的朋友是 <<DS.ManyArray:ember362>
>
顺便说一句,我一直在努力让某些东西发挥作用,而且它确实有效,但我确信这不是最佳解决方案,也可能不是一个好的做法。当然并不适用于所有情况:
friends: function()
{
var model = this.get('model');
var friendsList = model.get('friends').mapProperty('name');
return friendsList;
}.property('model.friends'),