最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

VUE利用vuex模擬實現(xiàn)新聞點(diǎn)贊功能實例

 更新時間:2017年06月28日 16:21:31   作者:學(xué)習(xí)筆記666  
本篇文章主要介紹了VUE利用vuex模擬實現(xiàn)新聞點(diǎn)贊功能實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

回顧新聞詳細(xì)頁

很早我們的新聞詳情頁是在news-detail.vue 組件里,獲取服務(wù)器數(shù)據(jù),然后把數(shù)據(jù)保持到組件的data 里,既然我們已經(jīng)用到了vuex,學(xué)習(xí)了它的state,我們就應(yīng)該想到把返回的數(shù)據(jù)交給state 來存儲。

1.首先在Vuex.Store 實例化的時候:

  state:{
    user_name:"",
    newslist:[],
    newsdetail:{}
  },

增加一個newsdetail 對象,newslist 數(shù)組是我們前面用來保存新聞列表數(shù)據(jù)的。

2.下面就要看在news-detail.vue 組件里,怎么請求數(shù)據(jù),然后交給newsdatail :

<script>
  export default{
    // 創(chuàng)建的時候[生命周期里]
    created(){
      this.$http.get("http://localhost/newsdetail.php?id="+this.$route.params.newsid).then(function(res){
        this.$store.state.newsdetail = res.body;
      },function(res){
        // 處理請求失敗
      });
    },
  }
</script>

通過this.$store.state.newsdetail = res.body; 就把服務(wù)器返回的新聞詳細(xì)數(shù)據(jù)保存起來了。

3.那么模板上怎么展示?

<div class="page-header">
  <h2>{{this.$store.state.newsdetail.title}}<small>{{this.$store.state.newsdetail.pubtime}}</small></h2>
  <p>點(diǎn)贊數(shù):{{this.$store.state.newsdetail.agree}} <button class="btn btn-success">點(diǎn)贊</button></p>
  <p>{{this.$store.state.newsdetail.desc}}</p>
</div>

這里寫圖片描述

這里我們要來實現(xiàn)一個點(diǎn)贊功能

點(diǎn)擊“點(diǎn)贊”按鈕,就更改點(diǎn)擊數(shù)。

其實就是更改newsdetail 里的agree 屬性。

本文參考文檔:https://vuefe.cn/vuex/actions.html

import Vuex from 'vuex';
Vue.use(Vuex);

const vuex_store = new Vuex.Store({
  state:{
    user_name:"",
    newslist:[],
    newsdetail:{}
  },
  mutations:{
    showUserName(state){
      alert(state.user_name);
    },
    setAgree(state,agreeNum){
      state.newsdetail.agree = agreeNum;
    }
  },
  actions:{
    agree(context,newsid){
      // 進(jìn)行請求,獲取點(diǎn)贊后的agree字段屬性值
      Vue.http.post("http://localhost/agree.php",{newsid:newsid},{emulateJSON:true}).then(function (res) {
        // 處理業(yè)務(wù)
        // 調(diào)用上面setAgree方法更新點(diǎn)贊數(shù)
        context.commit("setAgree",res.body.agree);
      },function(){})
    }
  },
  getters:{
    getNews(state){
      return state.newslist.filter(function (news) {
        return !news.isdeleted;
      })
    }
  }
})

actions 里定義了一個方法agree 發(fā)送網(wǎng)絡(luò)請求,獲取最新的點(diǎn)贊數(shù)。

同時mutations 里定義了一個setAgree 方法,用來同步頁面上的點(diǎn)贊數(shù)。

    agree(context,newsid){
      // 進(jìn)行請求,獲取點(diǎn)贊后的agree字段屬性值
      Vue.http.post("http://localhost/agree.php",{newsid:newsid},{emulateJSON:true}).then(function (res) {
        // 處理業(yè)務(wù)
        // 調(diào)用上面setAgree方法更新點(diǎn)贊數(shù)
        context.commit("setAgree",res.body.agree);
      },function(){})
    }

重點(diǎn)說明:這里發(fā)送http請求,和組件里不一樣,需要注意。

那么,組件里怎么調(diào)用這里的agree 方法呢?

<button class="btn btn-success" @click="submitAgree">點(diǎn)贊</button>
    methods:{
      submitAgree(){
        // 組件了調(diào)用actions里定義的agree方法
        this.$store.dispatch("agree",this.$store.state.newsdetail.id)
      }
    }

news-detail.vue 組件全部代碼:

<template>
  <div class="news-detail">
    <div class="row">
      <div class="page-header">
        <h2>{{this.$store.state.newsdetail.title}}<small>{{this.$store.state.newsdetail.pubtime}}</small></h2>
        <p>點(diǎn)贊數(shù):{{this.$store.state.newsdetail.agree}} <button class="btn btn-success" @click="submitAgree">點(diǎn)贊</button></p>
        <p>{{this.$store.state.newsdetail.desc}}</p>
      </div>
    </div>
  </div>
</template>

 
 

<script>
  export default{
    // 創(chuàng)建的時候[生命周期里]
    created(){
      this.$http.get("http://localhost/newsdetail.php?id="+this.$route.params.newsid).then(function(res){
        this.$store.state.newsdetail = res.body;
      },function(res){
        // 處理請求失敗
      });
    },
    methods:{
      submitAgree(){
        // 組件了調(diào)用actions里定義的agree方法
        this.$store.dispatch("agree",this.$store.state.newsdetail.id)
      }
    }
  }
</script>

這里寫圖片描述 

后端程序增加點(diǎn)贊數(shù),這里就不贅述了。只需返回一個json對象:

{"status":"success","agree":100}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue 2.0學(xué)習(xí)筆記之使用$refs訪問Vue中的DOM

    Vue 2.0學(xué)習(xí)筆記之使用$refs訪問Vue中的DOM

    這篇文章主要介紹了Vue 2.0學(xué)習(xí)筆記之使用$refs訪問Vue中的DOM,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • VUE配置proxy代理的開發(fā)測試及生產(chǎn)環(huán)境

    VUE配置proxy代理的開發(fā)測試及生產(chǎn)環(huán)境

    這篇文章主要為大家介紹了VUE配置proxy代理的開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Vue設(shè)置提示和警告彈出框?qū)崙?zhàn)案例

    Vue設(shè)置提示和警告彈出框?qū)崙?zhàn)案例

    頁面中會有很多時候需要彈窗提示,下面這篇文章主要給大家介紹了關(guān)于Vue設(shè)置提示和警告彈出框的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Vuex利用state保存新聞數(shù)據(jù)實例

    Vuex利用state保存新聞數(shù)據(jù)實例

    本篇文章主要介紹了Vuex利用state保存新聞數(shù)據(jù)實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 詳解vue slot插槽的使用方法

    詳解vue slot插槽的使用方法

    本篇文章主要介紹了詳解vue slot插槽的使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue父組件觸發(fā)事件改變子組件的值的方法實例詳解

    vue父組件觸發(fā)事件改變子組件的值的方法實例詳解

    這篇文章主要介紹了vue父組件觸發(fā)事件改變子組件的值的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • vue+echarts實現(xiàn)多條折線圖

    vue+echarts實現(xiàn)多條折線圖

    這篇文章主要為大家詳細(xì)介紹了vue+echarts實現(xiàn)多條折線圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue3跨域解決方案實例詳解

    Vue3跨域解決方案實例詳解

    這篇文章主要介紹了Vue3跨域解決方案詳解,需要的朋友可以參考下
    2023-01-01
  • vue cli 全面解析

    vue cli 全面解析

    vue是一套構(gòu)建用戶界面的漸進(jìn)式框架。這篇文章主要介紹了vue cli的相關(guān)知識,本文給大家及時的非常全面,需要的朋友可以參考下
    2018-02-02
  • 解決基于 keep-alive 的后臺多級路由緩存問題

    解決基于 keep-alive 的后臺多級路由緩存問題

    這篇文章主要介紹了解決基于 keep-alive 的后臺多級路由緩存問題,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論

巩留县| 屏边| 翁牛特旗| 会泽县| 垫江县| 临高县| 新疆| 闻喜县| 藁城市| 怀来县| 黄陵县| 安西县| 凉山| 望奎县| 永昌县| 清新县| 囊谦县| 娱乐| 汉源县| 浮梁县| 麻阳| 湘阴县| 应用必备| 香格里拉县| 玛纳斯县| 子洲县| 广德县| 北辰区| 政和县| 鲁甸县| 四会市| 定远县| 西乌珠穆沁旗| 河西区| 卫辉市| 昌吉市| 吉首市| 岳普湖县| 定远县| 株洲县| 金堂县|