2017-08-04 159 views
0

我无法将“disabled”参数设置为持久。如果我在数据函数里设置了disable: true,那么它似乎什么也没有做。我不能在Vue中设置“disabled”参数为持久的

你可以在里面mounted()看到它调用checkCanVote(),并在那里起初console.log说,这是设置为false,然后我将它设置为true但明星悬停(star_over())再次是false

http://jsfiddle.net/7unqk49k/1/

模板

<div id="star-app" v-cloak class="col-md-4"> 
    <star-rating value="<?php echo $this->rating_rounded; ?>"></star-rating> 
</div> 

<template id="template-star-rating"> 
    <div class="star-rating"> 
    <label class="star-rating__star" v-for="rating in ratings" :class="{'is-selected': ((value >= rating) && value != null), 'is-disabled': disabled}" @mouseover="star_over(rating)" @mouseout="star_out"> 
     <input class="star-rating star-rating__checkbox" type="radio" :name="name" :disabled="disabled" :id="id" :required="required" v-model="value" @click="set(rating)"> ★ 
    </label> 
    </div> 
</template> 

JS

Vue.component('star-rating', { 
    template: '#template-star-rating', 
    data: function data() { 
    return { 
     value: null, 
     temp_value: null, 
     ratings: [1, 2, 3, 4, 5], 
     disabled: true 
    }; 
    }, 
    props: { 
    'name': String, 
    'value': null, 
    'id': String, 
    'disabled': Boolean, 
    'required': Boolean 
    }, 
    methods: { 
    star_over: function star_over(index) { 
     console.log(this.disabled); 
     if (this.disabled == true) { 
     return; 
     } 
     this.temp_value = this.value; 
     this.value = index; 
    }, 
    star_out: function star_out() { 
     if (this.disabled == true) { 
     return; 
     } 

     this.value = this.temp_value; 
    }, 
    set: function set(value) { 
     if (this.disabled == true) { 
     return; 
     } 

     this.temp_value = value; 
     this.value = value; 

     // On click disable - this works 
     this.disabled = true; 
    }, 
    checkCanVote: function() { 
     console.log('Inside checkCanVote'); 
     console.log(this.disabled); 
     this.disabled = true; 
     console.log(this.disabled); 
    } 
    }, 
    mounted() { 
    this.checkCanVote(); 
    } 
}); 

new Vue({ 
    el: '#star-app' 
}); 

回答

0

的实际问题是命名things.Try避免使用相同的命名为您传递给子组件的道具和您在子组件中声明的数据属性。

为了得到这个预期的工作,你应该删除道具声明disabled道具和它应该工作。

http://jsfiddle.net/9debdkh1/