2

プロジェクトを管理するソーシャル ネットワークのような小さなアプリケーションに取り組んでいます。只今、ネットワーク上での交友関係を進めております。そのために、次の属性を持つ「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'),
4

1 に答える 1