qml에 속성이 정의되어 있지 않은지 어떻게 확인합니까? 있지 않은지 어떻게

qml에 속성이 정의되어 있지 않은지 어떻게 확인합니까?

이것이 내가하려고하는 일입니다.

Button {
    id: myButton
    text: if (text === "undefined"){"default text"}
}


답변

시험:
text: text ? text : "default text"

"undefined"은 참조 None또는 NULL다른 언어로 참조하지 않는 참조의 문자열 표현 일뿐 입니다.

===엄격한 비교 연산자 이므로이 스레드를 읽을 수 있습니다 : /programming/523643/difference-between-and-in-javascript


답변

import QtQuick 2.3
import QtQuick.Controls 1.2

Button {
    id: myButton
    text: text ? text : "default text"
}

이 대답은 나에게 경고를 던집니다.

QML Button: Binding loop detected for property "text"

변경 text으로 modelText대신하면 오류가 발생합니다.

ReferenceError: modelText is not defined

이로 인해 Javascript 실행이 중지됩니다. 즉, 다음 줄이 호출되지 않습니다.

자바 스크립트를 통해

Javascript를 통해 설정할 때도 마찬가지이지만 매우 장황합니다.

import QtQuick 2.3
import QtQuick.Controls 1.2

Button {
    id: myButton
    text: "default text"

    Component.onCompleted: {
        if (modelText !== "undefined") {
            myButton.text = modelText;
        }
    }
}

사용 typeof

typeof운영자 뮤트 오류 및 작품은 예상대로.

import QtQuick 2.3
import QtQuick.Controls 1.2

Button {
    id: myButton
    text: "default text"

    Component.onCompleted: {
        if (typeof modelText !== "undefined") {
            myButton.text = modelText;
        }
    }
}

답변

undefined와 비교하려면을 작성하십시오 text === undefined. textis 인 경우 false로 평가됩니다 null.

값이 있는지 확인하려면 (즉, undefined및 모두 확인 null) if 문 또는 삼항 연산자의 조건으로 사용하십시오. 비교 결과를 부울 값으로 저장해야하는 경우 사용하십시오 var textPresent = !!text(두 번 !코드를 읽는 사람과 혼동 될 수 있음).