プロジェクトを管理するソーシャル ネットワークのような小さなアプリケーションに取り組んでいます。只今、ネットワーク上での交友関係を進めております。そのために、次の属性を持つ「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 >から。彼/彼女の友達は < place2 >出身の < > <
<DS.ManyArray:ember360>
person2 >です。彼/彼女の友達は < place3 >出身の < > < person3 > です。彼/彼女の友達は < ><DS.ManyArray:ember361>
<DS.ManyArray:ember362>
ところで、私は何かを機能させようとしてきましたが、実際には機能しますが、それは最適な解決策ではなく、おそらく良い習慣でもありません. 確かに、すべてのケースに当てはまるわけではありません。
friends: function()
{
var model = this.get('model');
var friendsList = model.get('friends').mapProperty('name');
return friendsList;
}.property('model.friends'),