商品详情引用数据时报错

商品详情引用数据时报错

代码

-----------------------------

<template>

<div class="content-wrapper">

<div class="content-top">

<div class="price-text">{{contents.priceSectionData.price.priceText}}</div>

<div class="sold-count">{{contents.priceSectionData.mainBelt.soldCount.text}}</div>

</div>

<div class="content-middle">

<div class="content-middle-title">{{contents.item.title}}</div>

<div class="content-middle-box">

<div>{{contents.delivery.postage}}</div>

<div>月销量 {{contents.item.vagueSellCount}}</div>

<div>{{contents.delivery.from}}</div>

</div>

</div>

<div></div>

</div>

</template>

<script>

import {getProductDetail} from 'api/product';


export default {

name:'ProductContent',

components:{

},

data(){

return{

contents:{}

}

},

created(){  // 获取远程数据

this.getSliders()

},

methods:{

getSliders(){

return getProductDetail(this.$route.params.id).then(data => {

this.contents = data

console.log(this.contents)

})

}

}

}

</script>

--------------------------------------------

接收的数据

http://img1.sycdn.imooc.com//climg/5ebbbf76089187d415120884.jpg

-------------------------------

报的错误

http://img1.sycdn.imooc.com//climg/5ebbc019080883c515100802.jpg

----------------------

<div class="price-text">{{contents.priceSectionData.price.priceText}}</div>

<div class="sold-count">{{contents.priceSectionData.mainBelt.soldCount.text}}</div>

这两行引用数据的代码注释,报错就消失了

这是哪里不对

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,可以添加一个判断

http://img1.sycdn.imooc.com//climg/5ebe6cb10989a18909880133.jpg

当contents.priceSectionData存在时,再渲染内容。

祝学习愉快~

  • 解决了。想问下原因,我理解的是当前数据中有contents.priceSectionData应该不会报错,没有才会报错
    2020-05-18 16:07:14
好帮手慕言 2020-05-20 10:10:52

同学你好,如果contents.priceSectionData存在,那么数据一定是存在的,数据存在再去渲染到页面上就不会报错了。

祝学习愉快~

提问者 qq_我不是看不起_0 2020-05-15 16:38:23

api/product.js

-------------------------------------------

import jsonp from 'assets/js/jsonp'

import { jsonpOptions, TIMEOUT } from './config';


// 获取商品详情数据

export const getProductDetail = id => {

const url = 'https://unszacs.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/'

const params = {

api: 'mtop.taobao.detail.getdetail',

ttid: '2017%40taobao_h5_6.6.0',

data: `%7B"itemNumId"%3A"${id}"%7D`,

appKey: 12574478,

dataType: 'jsonp',

type: 'jsonp',

v: '6.0'

}


// jsonpOptions.timeout = 100;


return jsonp(url, params, jsonpOptions).then(res => {

// console.log(res);

if (res.data) {

// console.log(res);

return JSON.parse(res.data.apiStack[0].value);

}


throw new Error('没有成功获取到数据!');

}).catch(err => {

if (err) {

console.log(err);

}

}).then(res => {

return new Promise(resolve => {

setTimeout(() => {

resolve(res);

}, 1000);

});

});

}


好帮手慕言 2020-05-13 18:16:27

同学你好,建议:把api/product.js中的代码也粘贴上来。祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师