【问题标题】:Vue.js and Moment.js: Condition for deleting a commentVue.js 和 Moment.js:删除评论的条件
【发布时间】:2018-02-09 09:25:27
【问题描述】:

我需要能够在满足两个条件时删除评论:

  1. 评论作者的Id 等于我们的id(我们只能删除我们的cmets)。
  2. 距离创建评论不到 15 分钟。

我创建了第一个条件,但我正在努力使用 Moment.js 添加第二个条件。每条评论都有一个created_at 属性。

<a v-if="comment.author.id == myProfile.id"
   v-on:click.stop="deletePostComment({ params: { post_id: getPost.id, comment_id: comment.id } })"
   class="g-color-gray-light-v1 g-color-gray-dark-v3--hover g-font-size-12 float-right u-link-v5 magic-absolute-position"
   style="cursor: pointer;">
                Delete
</a>

我想我们可以在一个函数中同时满足这两个条件。请帮忙!

【问题讨论】:

  • created_at 时间戳是什么格式的?
  • 当我在其他组件中显示这个时间时,我是这样操作的:return moment(this.item.created_at, 'YYYY-MM-DD HH:mm:ss Z').fromNow();
  • 格式是这样的:created_at:"2018-02-07 11:40:00 +0000"

标签: javascript vue.js conditional-statements momentjs directive


【解决方案1】:

我决定添加带有函数showDeletev-if 指令,这将根据这两个条件显示或隐藏评论的“删除”选项。

然后我把这个函数放到computed

showDelete() {
  return moment().diff(moment(this.comment.created_at, 'YYYY-MM-DD HH:mm:ss Z'), 'minutes') <= 15 && this.comment.author.id === this.myProfile.id;
}

所以这个函数会监听布尔值。如果true,则会显示“删除”选项。

【讨论】:

    【解决方案2】:

    您可以通过从created_at 日期中减去当前日期来检查是否已经过了 15 分钟:

    var now = new Date();
    var created_at = new Date('2/9/2018 12:05')
    

    然后将其与 15 分钟值进行比较。像下面这样的东西应该可以工作:

    <a v-if="comment.author.id == myProfile.id && created_at - now >= 15*60*1000"
       v-on:click.stop="deletePostComment({ params: { post_id: getPost.id, comment_id: comment.id } })"
       class="g-color-gray-light-v1 g-color-gray-dark-v3--hover g-font-size-12 float-right u-link-v5 magic-absolute-position"
       style="cursor: pointer;">
                    Delete
    </a>
    

    【讨论】:

    • 对不起,我没有在这里得到15*60*1000 是什么。
    • 这是我们以 unix 格式计算分钟的方式。您实际需要比较的 15 分钟值。
    【解决方案3】:

    这个怎么样?

    <div v-if="isPastime('2018-02-07 11:40:00 +0000', 15, 'days')"></div>
    <!-- In you case so do something like -->
    <a v-if="comment.author.id === myProfile.id && isPastime(comment.created_at, 15, 'days')"></a>
    

    方法:

    methods: {
        isPastime: function (time, number, unit) {
            return moment(time).diff(moment(), unit) <= - number
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 2011-12-18
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多