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


답변:


12

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

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

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


그것은 매우 영리한 해결책이었습니다. 감사. 다른 사람에게 설명하기 만하면됩니다. if (text === text) {text} else { "default text"}라고 말하는 것과 같습니다.
Akiva

2
if (text) { text } else {"default text"}정확히는. 정의되지 않은 if (object)경우 false로 평가됩니다 object. 포인터의 값이 0 (NULL) 인 경우 false로 평가되는 C 스타일 if (pointer)에 대한 유사한 해킹. 그 지적이의 가치가 text버튼의 텍스트 속성에 사용되는 변수는 외부 범위에서 가져옵니다. 다음과 같이 훨씬 더 명확 해집니다. text: inText ? inText : "default text"또는if(inText) { text } else {"default text"}
Kissiel

멍청하게해서 미안하지만 이것은 내가 전혀 이해하지 못한 것입니다. 논리적으로 기술적으로는 다음과 같이 읽습니다 if (text is true) then {text = text} else {text = "default text"}.-이것이 정확합니까?
Akiva

2
당신은 꽤 옳습니다. 이 의사 코드에 대한 직관적이지 않은 것은입니다 if (text is true). if (text *is*)또는 로 생각하기가 더 쉽다는 것을 알게되었습니다 if (text exists). 또 다른 좋은 소스 : developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Kissiel

1
text = ""(빈 문자열)이면 실패합니다. if는 false를 반환합니다.
RvdK

5
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;
        }
    }
}

3

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.