是不是不能直接this.onlycontent操作props里面的参数。会报错

来源:18-11 ratingselect组件(5)

qq_发潮烧_0

2017-06-28

http://szimg.mukewang.com/5953649b0001902f15320560.jpg

toggleType(event){

     if(!event._constructed){

     return;

       }

    this.onlyContent = !this.onlyContent;

}


写回答

1回答

小小斌

2017-06-28

老师的课程vue1.0,直接操作没有报错。

<template>
<div class="ratingselect">
<div class="rating-type border-1px">
<span class="block positive" :class="{'active':selectType==2}" @click="select(2,$event)">
{{desc.all}}
<span class="count">{{ratings.length}}</span>
</span>
<span class="block positive" :class="{'active':selectType==0}" @click="select(0,$event)">
{{desc.positive}}
<span class="count" :class="{'active':selectType==0}">{{positive.length}}</span>
</span>
<span class="block negative" :class="{'active':selectType==1}"  @click="select(1,$event)">
{{desc.negative}}
<span class="count">{{negative.length}}</span>
</span>
</div>
<div class="switch" :class="{'on':onlyContent}" @click="toggleContent">
<span class="icon-check_circle"></span>
<span class="text">只看有内容的评价</span>
</div>
</div>
</template>

<script>
const POSITIVE = 0;
const NEGATIVE = 1;
const ALL = 2;

export default {
props: {
ratings: {
type: Array,
default() {
return [];
}
},
selectType: {
type: Number,
default: ALL,
},
onlyContent: {
type: Boolean,
default: false,
},
desc: {
type: Object,
default() {
return {
all: '全部',
positive: '满意',
negative: '不满意',
}
}
}
},
computed: {
positive() {
return this.ratings.filter((rating) => {
return rating.rateType === POSITIVE;
});
},
negative() {
return this.ratings.filter((rating) => {
return rating.rateType === NEGATIVE;
});
},
},
methods: {
select(type,event) {
if (!event._constructed) {
return;
}
this.selectType = type;
this.$dispatch('ratingtype.select',type);
},
toggleContent(event) {
if (!event._constructed) {
return;
}
this.onlyContent = !this.onlyContent;
this.$dispatch('content.toggle',this.onlyContent);
}
},
}
</script>

<style lang="stylus">
@import "../../common/stylus/mixin.styl";

.ratingselect
.rating-type
padding: 18px 0
margin: 0 18px
border-1px(rgba(7,17,27,0.1))
font-size: 0
.block
display: inline-block
padding: 8px 12px
line-height: 16px
margin-right: 8px
border-radius: 1px
font-size: 12px
color: rgb(77,85,93)
                &.active
color: #fff
.count
margin-left: 2px
font-size: 8px
                &.positive
background: rgba(0,160,200,0.2)
                    &.active
background: rgb(0,160,220)
                &.negative
background: rgba(77,85,93,0.2)
                    &.active
background: rgb(77,85,93)
.switch
padding: 12px 18px
line-height: 24px
border-bottom: 1px solid rgba(7,17,27,0.1)
color: rgb(147,153,159)
font-size: 0
            &.on
.icon-check_circle
color: #00c850
.icon-check_circle
display: inline-block
vertical-align: top
margin-right: 4px
font-size: 24px
.text
font-size: 12px

</style>


0
0

Vue.js2.5+cube-ui重构饿了么App(经典再升级)

掌握Vue1.0到2.0再到2.5最全版本应用与迭代,打造极致流畅的WebApp

9868 学习 · 4162 问题

查看课程