Ответы:
Пытаться:
text: text ? text : "default text"
"undefined"это просто строковое представление ссылки, не ссылающейся ни на что, как Noneи NULLна других языках.
===является оператором строгого сравнения, вы можете прочитать эту тему: /programming/523643/difference-between-and-in-javascript
if (text) { text } else {"default text"}если быть точным. if (object)оценивается как ложное, если objectне определено. Подобный хак в C-стиле if (указатель), который оценивается как ложный, если указатель имеет значение 0 (NULL). Стоит отметить, что textпеременная, используемая для свойства текста кнопки, берется из области видимости. Это будет намного яснее с:, text: inText ? inText : "default text"илиif(inText) { text } else {"default text"}
if (text is true) then {text = text} else {text = "default text"}- это точно?
if (text is true). Мне легче думать как if (text *is*)или if (text exists). Еще один хороший источник: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
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;
}
}
}
Для сравнения с неопределенным ты пишешь text === undefined. Это будет оцениваться как ложное, если textесть null.
Если вы хотите проверить наличие значения (т. Е. Проверить оба undefinedи null), используйте его как условие в операторе if или в троичном операторе. Если вам нужно сохранить результат сравнения как логическое значение, используйте var textPresent = !!text(хотя double !может показаться запутанным при чтении кода).