【发布时间】:2013-06-21 18:15:00
【问题描述】:
我正在开发一个像社交网络这样的小型应用程序来管理项目。现在,我正在研究网络上的友谊关系。为此,我创建了一个名为“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'),
【问题讨论】:
标签: model controller ember.js relationship ember-data