2016-07-28 41 views
1

假設我有一個QtObject,它有一些屬性。有沒有用在其他在同一QtObject結合一個有約束力的任何缺點:QML屬性綁定取決於同一組件中的其他綁定

QtObject { 
    // This is set by the caller 
    property var myObject 

    readonly property bool haveMyObject: myObject ? true : false 
    readonly property bool isSomething1: haveMyObject ? myObject.isSomething1 : false 
    readonly property bool isSomething2: haveMyObject ? myObject.isSomething2 : false 
    readonly property bool isSomething3: haveMyObject ? myObject.isSomething3 : false 
    readonly property bool isSomething4: haveMyObject ? myObject.isSomething4 : false 
    readonly property bool isSomething5: haveMyObject ? myObject.isSomething5 : false 
} 

,而不是這樣的:

QtObject { 
    // This is set by the caller 
    property var myObject 

    readonly property bool haveMyObject: myObject ? true : false 
    readonly property bool isSomething1: myObject ? myObject.isSomething1 : false 
    readonly property bool isSomething2: myObject ? myObject.isSomething2 : false 
    readonly property bool isSomething3: myObject ? myObject.isSomething3 : false 
    readonly property bool isSomething4: myObject ? myObject.isSomething4 : false 
    readonly property bool isSomething5: myObject ? myObject.isSomething5 : false 
} 

哪一個最好?我問的原因是因爲Qt文檔評估的順序是不確定的。

回答

2

訂單完全未定義是不正確的。綁定以依賴關係定義的順序進行評估。對於任何dependant-dependency對,保證在dependant之前評估dependency方。因此,每isSomething財產被評估/更新它依賴haveMyObject已被評估/更新。

+0

我明白了,這是一個非常有用的信息,謝謝。你也可以提供一個鏈接,也有這個信息? – Silex

+0

@Silex試想一下另一種方法,然後再考慮是否有其他方法可行。 –

+0

有道理,謝謝! – Silex