無所作為的旁觀者不行動
P粉373596828
P粉373596828 2023-09-14 17:33:51
0
2
551

我是新的vuejs。如下所示的程式碼,isBtnDigitizePolygonClicked是一個響應式變數。我試圖在isBtnDigitizePolygonClicked的值發生變化時執行一些程式碼作為副作用。為此,我使用了watch,如下所示的程式碼。

我現在遇到的問題是,當程式碼執行時,儘管呼叫了onDigitizePolygon方法,但在被觀察的變數isBtnDigitizePolygonClicked中的日誌訊息從未顯示出來,就好像觀察者沒有執行。

請告訴我為什麼會發生這種情況以及如何解決。

程式碼

let isBtnDigitizePolygonClicked = ref(true);
...
... 
watch: {
    isBtnDigitizePolygonClicked(newVal, oldVal) {
        console.log(debugTag, 'newVal:', newVal);
        console.log(debugTag, 'oldVal:', oldVal);
        if (digitizePolygonInteractions) {
            if (newVal == true) {
                digitizePolygonInteractions.remove();
            } else {
                digitizePolygonInteractions.add();
            }
        } else {
            throw new Error('WTF.digitizePolygonInteractions is:');
        }
    },
    immediate: false,
},
computed: {
    compPropsIsBtnDigitizePolygonDisabled() {
        if (isBtnDigitizePolygonClicked.value == true) {
            return values.CONST_STRING_DIGITIZE;
        } else {
            return values.CONST_STRING_STOP_DIGITIZE;
        }
    },
},
methods: {
    onDigitizePolygon() {
        console.info(debugTag, 'onDigitizePolygon()');
        isBtnDigitizePolygonClicked.value = !isBtnDigitizePolygonClicked.value;
    },
}

模板

<button @click="onDigitizePolygon()">{{ compPropsIsBtnDigitizePolygonDisabled }}</button>
P粉373596828
P粉373596828

全部回覆(2)
P粉463418483

使用 options-api,您可以直接寫:

data() {
    return {
        isBtnDigitizePolygonClicked: true,
    }
}

data() {..} 中的內容會自動響應式。 因此,不需要使用

let isBtnDigitizePolygonClicked = ref(true);
P粉425119739

我認為我的錯誤在於,我沒有將isBtnDigitizePolygonClicked加到`data()`的回傳值中

程式碼:

data() {
    return {
        isBtnDigitizePolygonClicked,
    }
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板