2017-08-04 46 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/

相關問題