在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ iview 中, switch 開關(guān)如何在 methods 中控制?

iview 中, switch 開關(guān)如何在 methods 中控制?

這是代碼:

<i-switch size="small" :value="isEnable" @on-change="switch"/>
<script>
    new Vue({
        el: '#app',
        data: {
            isEnable: false
        },
        methods: {
            switchTokenLogin: function(status){
                this.isEnable = false;
            }
        }
    })
</script>

預(yù)想的是:當(dāng)點(diǎn)擊開關(guān)時(無論開或關(guān)),他總是處于關(guān)閉狀態(tài),但上面的代碼卻達(dá)不到,,設(shè)置了 isEnable 這個值頁面不能正常重新渲染,,大佬們這個怎么解?

回答
編輯回答
拼未來

當(dāng)點(diǎn)擊開關(guān)時(無論開或關(guān)),他總是處于關(guān)閉狀態(tài)

你首先得把 value 緩存 v-model

我的代碼示例:

<i-switch v-model="m1" :loading="loading">
            <span slot="open">開</span>
            <span slot="close">關(guān)</span>
        </i-switch>
        {{ m1 }}
        <div @click="m1 = false">toggle</div>
    
    data 里面:m1: true
   
2018年5月2日 19:28
編輯回答
孤客

iview沒有相應(yīng)的函數(shù)可以控制,不過可以使用disabled屬性模擬

<i-switch v-model="switch1" @on-change="change" :disabled="!(disabled && switch1)"/>

data () {
    return {
        switch1: true,
        disabled: true
    }  
},
methods: {
    change (status) {
        this.disabled = false
    }
}

17:30補(bǔ)充

根據(jù)你發(fā)的鏈接看了下,剛開始以為是增加了before-change事件,但是查看文檔,源碼都沒找到相應(yīng)的內(nèi)容,查了下三個版本的版本更新,也沒有找到switch組件before-change的更新內(nèi)容
switch點(diǎn)擊和input事件

再次看了下鏈接上講的,最后一個回復(fù)是

我認(rèn)為Promise應(yīng)該是開發(fā)者端配置的。而我們這樣寫的話:

    this.beforeChange().then((result)=>{
        // xxx
    })
本質(zhì)上iView不用做任何處理,開發(fā)者使用時,他可以根據(jù)自己當(dāng)前的情況來考慮要不要做Polyfill。

所以,他的意思是iview并沒有增加相關(guān)事件,而是讓我們用Promise自己實(shí)現(xiàn),所以這就變成了需要我們自己等待狀態(tài)改變后再去手動改變他的狀態(tài),那么使用Promise可以這么寫

data () {
    return {
        switch1: true
    }  
},
methods: {
    beforeChange(val){
        return val ? new Promise((resolve) => {
        setTimeout(function () {
            resolve(true);
        }, 300);
        }) : false
    },
    change (status) {
        var r = this.beforeChange(status)
        r && r.then(()=>{
            this.switch1 = false
        })
    }
}

這種的就變成了狀態(tài)由true改為false正常使用,但是由false變成true,會先改變?yōu)閠rue,300ms(可自己定義時長)后狀態(tài)再變成false

不知道你要的可是這種,我覺得你想要的應(yīng)該是狀態(tài)為false后不可點(diǎn)擊。這個我覺得只能通過修改源碼來實(shí)現(xiàn)了

2017年4月18日 17:03