Как проверить, не определено ли свойство в qml?
Вот что я пытаюсь сделать:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
Как проверить, не определено ли свойство в 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
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/…Этот ответ бросает мне предупреждение.
Изменение
text
кmodelText
вместо выдает ошибку.Это останавливает выполнение Javascript для меня; то есть следующая строка не называется.
Через Javascript
То же самое происходит при настройке через Javascript, но довольно многословно.
С помощью
typeof
В
typeof
операторские немые ошибки и работает , как ожидалось.источник
Для сравнения с неопределенным ты пишешь
text === undefined
. Это будет оцениваться как ложное, еслиtext
естьnull
.Если вы хотите проверить наличие значения (т. Е. Проверить оба
undefined
иnull
), используйте его как условие в операторе if или в троичном операторе. Если вам нужно сохранить результат сравнения как логическое значение, используйтеvar textPresent = !!text
(хотя double!
может показаться запутанным при чтении кода).источник