কোনও সম্পত্তি কিউএমএল এ অপরিবর্তিত আছে কিনা তা আপনি কীভাবে পরীক্ষা করবেন?


14

কোনও সম্পত্তি কিউএমএল এ অপরিবর্তিত আছে কিনা তা আপনি কীভাবে পরীক্ষা করবেন?

এটি আমি যা করার চেষ্টা করছি:

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

উত্তর:


12

চেষ্টা করুন: text: text ? text : "default text"

"undefined"কেবল একটি রেফারেন্সের একটি স্ট্রিং প্রতিনিধিত্ব যা কিছু উল্লেখ করে না, ঠিক যেমন Noneবা NULLঅন্যান্য ভাষায়।

===কঠোর তুলনা অপারেটর, আপনি এই থ্রেডটি পড়তে চাইতে পারেন: /programming/523643/differences-between-and-in-javascript


এটি একটি খুব চালাক সমাধান ছিল। ধন্যবাদ। শুধু অন্য কাউকে বোঝাতে; এর ধরণের কথা বলা (যদি আমি ভুল হই তবে আমাকে সংশোধন করি) যদি (পাঠ্য === পাঠ্য) {পাঠ্য} অন্য {"ডিফল্ট পাঠ্য"}
আকিভা

2
if (text) { text } else {"default text"}সঠিক হবে. if (object)অপরিজ্ঞাত থাকলে মিথ্যাতে মূল্যায়ন করে object। সি-স্টাইলের মতো অনুরূপ হ্যাক (পয়েন্টার) যা পয়েন্টারটির মান 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"}- এটি কি সঠিক?
আকিভা

2
আপনি বেশ ঠিক বলেছেন। এই সিউডো কোড সম্পর্কে একমাত্র অনর্থক জিনিস if (text is true)। আমি হিসাবে if (text *is*)বা হিসাবে চিন্তা করা সহজ if (text exists)। আর একটি ভাল উত্স: বিকাশকারী.মোজিলা.আর.ইন
ইউএস

1
এটি পাঠ্য = "" (ফাঁকা স্ট্রিং) দিয়ে ব্যর্থ হবে, যদি
মিথ্যাটি

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

এটি আমার জন্য জাভাস্ক্রিপ্ট কার্যকর করা বন্ধ করে দেয়; অর্থাৎ পরের লাইনটি বলা হয় না।

জাভাস্ক্রিপ্ট মাধ্যমে

এটি জাভাস্ক্রিপ্টের মাধ্যমে সেট করার সময় ঘটেছিল তবে এটি বেশ ভার্জোজ।

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

অপরিশোধিত আপনি লিখতে চেয়ে তুলনা করতে text === undefined। এটি যদি মিথ্যা হয় তবে textতা মূল্যায়ন করবে null

আপনি চেক চান যদি মান উপস্থিত (অর্থাত, উভয় জন্য চেক undefinedএবং null), যদি বিবৃতি অথবা তিন অপারেটর মধ্যে শর্ত হিসাবে এটি ব্যবহার। আপনার যদি তুলনার ফলাফলটি বুলিয়ান মান হিসাবে সঞ্চয় করতে হয় var textPresent = !!textতবে ব্যবহার করুন (যদিও !কোডটি পড়ার ক্ষেত্রে দ্বিগুণ বিভ্রান্ত হতে পারে)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.