国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Vue實(shí)戰(zhàn)-菜單欄,商品展示數(shù)據(jù)交互(8)

chnmagnus / 1130人閱讀

摘要:上篇我們將菜單欄,商品展示結(jié)構(gòu)完成,本次我們?yōu)檫@兩個(gè)部分接入數(shù)據(jù)。菜單欄接入數(shù)據(jù)導(dǎo)入組件,定義需要的數(shù)據(jù)格式導(dǎo)入滾動(dòng)組件導(dǎo)入商品頁(yè)面準(zhǔn)備需要的數(shù)據(jù)初始化組件。

上篇我們將菜單欄,商品展示結(jié)構(gòu)完成,本次我們?yōu)檫@兩個(gè)部分接入數(shù)據(jù)。

菜單欄接入數(shù)據(jù)

導(dǎo)入組件,定義需要的數(shù)據(jù)格式


通過(guò)created鉤子發(fā)起請(qǐng)求獲取數(shù)據(jù)

之前我們說(shuō)過(guò)在created鉤子,mounted鉤子內(nèi)可以發(fā)起請(qǐng)求,請(qǐng)求需要的數(shù)據(jù)。本次我們?cè)赾reated鉤子內(nèi)發(fā)起get請(qǐng)求,獲取數(shù)據(jù)

  created() {
    //通過(guò)that改變.then中的this指向
    var that = this;

    // 通過(guò)axios發(fā)起get請(qǐng)求
    this.$axios
      .get("/api/goods")
      .then(function(response) {
        // 獲取到數(shù)據(jù)
        var dataSource = response.data;
        if (dataSource.code == 0) {
          that.container = dataSource.data.container_operation_source;
          that.goods = dataSource.data.food_spu_tags;
          that.poiInfo = dataSource.data.poi_info;

          // 調(diào)用滾動(dòng)的初始化方法
          // that.initScroll();
          // 開始時(shí),DOM元素沒(méi)有渲染,即高度是問(wèn)題
          // 在獲取到數(shù)據(jù)后,并DOM已經(jīng)被渲染,表示列表高度是沒(méi)問(wèn)題的
          // nextTick
          that.$nextTick(() => {
            // DOM已經(jīng)更新
            that.initScroll();

            // 計(jì)算分類區(qū)間高度
            that.calculateHeight();
          });
        }
      })
      .catch(function(error) {
        // 出錯(cuò)處理
        console.log(error);
      });
  },

注意$nextTick()用法,在dom更新后。我們執(zhí)行初始化滾動(dòng)函數(shù)。

https://cn.vuejs.org/v2/api/#...

通過(guò)methods定義我們需要的方法

通過(guò)head_bg(imgName)方法獲取到商品的背景圖片;

方法initScroll()用來(lái)初始化滾動(dòng),https://cn.vuejs.org/v2/api/#ref;

calculateHeight()方法獲取左側(cè)每一個(gè)菜單欄目的元素;

使用selectMenu()方法,在我們點(diǎn)擊菜單后,右側(cè)顯示對(duì)應(yīng)的商品信息;

methods: {

head_bg(imgName) {
  return "background-image: url(" + imgName + ");";
},
// 滾動(dòng)的初始化
initScroll() {
  // ref屬性就是用來(lái)綁定某個(gè)dom元素或某個(gè)組件,然后在this.$refs里面
  this.menuScroll = new BScroll(this.$refs.menuScroll, {
    click: true
  });
  this.foodScroll = new BScroll(this.$refs.foodScroll, {
    probeType: 3,
    click: true
  });

  // 添加滾動(dòng)監(jiān)聽(tīng)事件
  this.foodScroll.on("scroll", pos => {
    this.scrollY = Math.abs(Math.round(pos.y));
  });
},
calculateHeight() {
  // 通過(guò)$refs獲取到對(duì)應(yīng)的元素
  let foodlist = this.$refs.foodScroll.getElementsByClassName(
    "food-list-hook"
  );

  // 添加到數(shù)組區(qū)間
  // 0~216 第一個(gè)區(qū)間(專場(chǎng))
  // 217~1342 第二個(gè)區(qū)間(熱銷)
  let height = 0;
  this.listHeight.push(height);
  for (let i = 0; i < foodlist.length; i++) {
    let item = foodlist[i];

    // 累加
    height += item.clientHeight;

    this.listHeight.push(height);
  }
},
selectMenu(index) {

  let foodlist = this.$refs.foodScroll.getElementsByClassName(
    "food-list-hook"
  );

  // 根據(jù)下標(biāo),滾動(dòng)到相對(duì)應(yīng)的元素
  let el = foodlist[index];
  // 滾動(dòng)到對(duì)應(yīng)元素的位置
  this.foodScroll.scrollToElement(el, 250);
}

},

computed定義屬性

currentIndex屬性綁定在左側(cè)菜單欄,使菜單元素與右側(cè)內(nèi)容作為對(duì)應(yīng),展示給用戶。

computed: {

currentIndex() {
  // 根據(jù)右側(cè)滾動(dòng)位置,確定對(duì)應(yīng)的索引下標(biāo)
  for (let i = 0; i < this.listHeight.length; i++) {
    // 獲取商品區(qū)間的范圍
    let height1 = this.listHeight[i];
    let height2 = this.listHeight[i + 1];

    // 是否在上述區(qū)間中
    if (!height2 || (this.scrollY >= height1 && this.scrollY < height2)) {
      return i;
    }
  }

  return 0;
   }
 },

以上我們完成了商品頁(yè)面數(shù)據(jù)的交互,下一篇我們將加入商品控件,與購(gòu)物車。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/105622.html

相關(guān)文章

  • webpack+vue項(xiàng)目實(shí)戰(zhàn)(二,開發(fā)管理系統(tǒng)主頁(yè)面)

    摘要:運(yùn)行一下,發(fā)現(xiàn)路由變了,當(dāng)前項(xiàng)有標(biāo)識(shí)了,子菜單的顯示與隱藏也有了原理也很簡(jiǎn)單。 1.前言 上篇文章(webpack+vue項(xiàng)目實(shí)戰(zhàn)(一,搭建運(yùn)行環(huán)境和相關(guān)配置))搭建了好了基本的一個(gè)項(xiàng)目目錄,安好好了一些要用到的依賴,以及把項(xiàng)目跑了起來(lái)。接下來(lái),我們就進(jìn)行第二步的操作,第二步就是做好一個(gè)開發(fā)系統(tǒng)的主頁(yè)面,這個(gè)頁(yè)面主要也就是一個(gè)側(cè)邊欄,通過(guò)側(cè)邊欄的各個(gè)選項(xiàng)來(lái)進(jìn)行操作(切換各個(gè)組件)。比如...

    Harpsichord1207 評(píng)論0 收藏0
  • Vue實(shí)戰(zhàn)-商品展示切圖(7)

    摘要:本篇我們將繼續(xù)推進(jìn)外賣項(xiàng)目商品頁(yè)的展示。如圖所示,我們可以把商品也面分為兩大部分左側(cè)菜單欄右側(cè)商品展示為當(dāng)前商品頁(yè)面的根元素。下一篇文章我們開始為左側(cè)菜單欄,右側(cè)商品展示加入數(shù)據(jù)。 上次我們通過(guò)設(shè)計(jì)評(píng)價(jià)組件這個(gè)過(guò)程,了解到了組件設(shè)計(jì)中的良好的習(xí)慣,比如,文件夾如何支撐組件,圖片,組件路徑的存放于設(shè)置。 本篇我們將繼續(xù)推進(jìn)外賣項(xiàng)目—商品頁(yè)的展示。 showImg(https://segm...

    DirtyMind 評(píng)論0 收藏0
  • 前方來(lái)報(bào),八月最新資訊--關(guān)于vue2&3的最佳文章推薦

    摘要:哪吒別人的看法都是狗屁,你是誰(shuí)只有你自己說(shuō)了才算,這是爹教我的道理。哪吒去他個(gè)鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰(shuí)和你做朋友太乙真人人是否能夠改變命運(yùn),我不曉得。我只曉得,不認(rèn)命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...

    izhuhaodev 評(píng)論0 收藏0
  • vue輕量級(jí)后臺(tái)管理系統(tǒng)基礎(chǔ)模板

    摘要:具體實(shí)現(xiàn)請(qǐng)查看和的退出登陸回調(diào)方法。現(xiàn)在除了必要的頁(yè)面需要在一開始添加到路由表里,其他的頁(yè)面都可以根據(jù)后臺(tái)數(shù)據(jù)來(lái)自動(dòng)生成。另外,如果在未登陸時(shí)要訪問(wèn)某一指定頁(yè)面,會(huì)重定向到登陸頁(yè),登陸成功后會(huì)自動(dòng)跳到這個(gè)指定頁(yè)面。 項(xiàng)目地址 vue-admin-template 在線預(yù)覽 更新 2019.6.25 更新 修復(fù)路由表沖突問(wèn)題 退出當(dāng)前用戶,換賬號(hào)重新登陸時(shí),上個(gè)賬號(hào)和現(xiàn)在的賬號(hào)路由表會(huì)有...

    2shou 評(píng)論0 收藏0
  • webpack+vue項(xiàng)目實(shí)戰(zhàn)(三,配置功能操作頁(yè)和組件的按需加載)

    摘要:但是實(shí)際上,回款管理和開票管理的組件文件也是加載了。所以下面引用按需加載來(lái)處理。是不是小很多了,然后和是按需加載的,就是需要的時(shí)候才加載。 1.前言 上篇文章(webpack+vue項(xiàng)目實(shí)戰(zhàn)(二,開發(fā)管理系統(tǒng)主頁(yè)面)),實(shí)現(xiàn)了,側(cè)邊欄的一個(gè)操作,點(diǎn)擊側(cè)邊欄的一些操作,最重要的就是路由的切換。看了上一篇的伙伴也不難發(fā)現(xiàn),除了點(diǎn)擊側(cè)邊欄‘首頁(yè)’之外,點(diǎn)擊其它的都是白色的一片。原因我想大家都...

    endless_road 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<