Laravel技巧集锦(29):使用vuejs组件化开发关注按钮

1、创建vue文件,目录为:resources\assets\js\components\QuestionFollowButton.vue,写入

<template>

    <button  class="btn  btn-default"
             v-bind:class="{'btn-success':followed}"
             v-text="text"
             v-on:click="follow"
    >

    </button>
</template>

<script>
    export default {

        props:['question','user'],

        mounted() {
            this.$http.post('/api/question/follower',{'question':this.question,'user':this.user}).then(response=>{
                this.followed = response.data.followed;
            });
        },

        data(){
            return {
                followed:false
            }
        },

        computed:{
            text(){
                return this.followed?'取消关注1':'关注问题1';
            }
        },

        methods:{
           follow() {
                this.$http.post('/api/question/follow',{'question':this.question,'user':this.user}).then(response=>{
                    this.followed = response.data.followed;
                });
            },
        }
    }
</script>

2、在app.js中注册此按钮组件 resources\assets\js\app.js

require('./bootstrap');


Vue.component('question-follow-button', require('./components/QuestionFollowButton.vue'));

const app = new Vue({
    el: '#app'
});

3、视图中使用

//question user 即为props数据
<question-follow-button question="{{$question->id}}" user="{{\Auth::id()}}"></question-follow-button>

4、api.php中routes\api.php

Route::post('/question/follower',function (Request $request){
    $followed = \App\Follow::where('question_id',$request->get('question'))
        ->where('user_id',$request->get('user'))
        ->count();

    if ($followed){
        return response()->json(['followed'=>true]);
    }else{
        return response()->json(['followed'=>false]);
    }
})->middleware('auth:api');

Route::post('/question/follow',function (Request $request){
    $followed = \App\Follow::where('question_id',$request->get('question'))
        ->where('user_id',$request->get('user'))
        ->first();
    //当用户点击按钮时,进行判断,若已经关注则删除
    if ($followed!==null){
        $followed->delete();
        return response()->json(['followed'=>false]);
    }
   //若未关注则增加
    \App\Follow::create([
        'question_id' => $request->get('question'),
        'user_id' => $request->get('user'),
    ]);
    return response()->json(['followed'=>true]);
})->middleware('api');

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值