1

こんにちは、Ember.js で投稿の作成者に対してのみ投稿の削除ボタンを表示する方法に何日も悩まされています (これを構築するために ember-cli を使用しています)。「投稿(リスト)にカーソルを合わせたとき、投稿の作成者が現在ログインしているユーザーと等しい場合、削除ボタンを表示する」というロジックをどこに置くべきかわかりません。私を助けてください。

テンプレートでapp/templates/posts.hbs

{{#each}}
  <div class="eachPost">
    {{#view 'posts'}}
    <div class="postProfilePhoto">
      {{#link-to 'users' }}
      <img src="" alt="Profile Photo">
      {{/link-to}}
    </div>
    <div class="eachPostContent">
      <p class="postAuthor"><strong>{{user.id}}</strong></p>
      <p class="postContent">{{body}}</p>
      <span class="timePosted"><em>somtimes ago</em></span>
      {{#if view.entered}}{{#if isAuthor}}   
        <a class="deletePost" {{action "removePost" this}}>Delete</a>
      {{/if}}{{/if}}
    </div>
    {{/view}}
  </div>
{{/each}}

ビューでapp/views/posts.js

var Posts = Ember.View.extend({
  classNames: ['eachPostContent'],
  mouseEnter: function(event){
    this.set('entered', true);
    this.get('controller').send('isAuthor', this.get('post').user);
  },
  mouseLeave: function(){
    this.set('entered', false);
  }
});

export default Posts;

コントローラーでapp/controllers/posts.js

var PostsController = Ember.ArrayController.extend({
    ...
    isAuthor: function(user){
      if(this.get('session').user !== null && user === this.get('session').user){
        return true;
      } else {
        return false;
        console.log('You are not author');
      }
    }
  }
});

export default PostsController;

解決した

app/templates/posts.hbs

{{#each itemController="post"}}
  <div class="eachPost">

作成したapp/controllers/post.js

var PostController = Ember.ObjectController.extend({
  isAuthor: function(){
    return this.get('user') === this.get('session').user;
  }.property('user')
});

export default PostController;

から次のコードを削除しますapp/views/posts.js this.get('controller').send('isAuthor', this.get('post').user);

isAuthorから関数を削除しましたapp/controllers/posts.js

4

1 に答える 1

2

上で述べたように、あなたはitemController

var PostsController = Ember.ArrayController.extend({
   itemController:'post',
    ...
});

そしてitemController、投稿の作成者 ID に対してユーザー ID をチェックする計算されたプロパティを作成します。

var PostController = Ember.ObjectController.extend({
    isAuthor: function(){
      //assuming the user property exists on an individual post model
      return this.get('user') === this.get('session').user;
    }.property('user')
})
于 2014-05-26T15:32:32.213 に答える