2016-07-28 6 views
1

Nehmen wir an, ich habe eine QtObject, die einige Eigenschaften hat. Gibt es irgendwelche Nachteile einer Bindung in einer anderen Bindung im gleichen QtObject mit:QML-Eigenschaft Bindung abhängig von einer anderen Bindung in der gleichen Komponente

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 
} 

statt dessen:

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 
} 

Welches ist vorzuziehen? Der Grund, warum ich frage, ist, weil durch die Qt-Dokumente die Reihenfolge der Auswertung nicht definiert ist.

Antwort

2

Es ist nicht wahr, dass die Reihenfolge völlig undefiniert ist. Die Bindungen werden in einer Reihenfolge ausgewertet, die durch ihre Abhängigkeitsbeziehungen definiert ist. Für jedes dependant-dependency Paar wird garantiert, dass die dependency Seite vor dependant ausgewertet wird. Somit wird jede isSomething Eigenschaft ausgewertet/aktualisiert nach es Abhängigkeit haveMyObject wurde ausgewertet/aktualisiert.

+0

Ich sehe, das ist eine ziemlich nützliche Information, danke. Kannst du vielleicht auch einen Link angeben, der diese Informationen enthält? – Silex

+0

@Silex Stellen Sie sich die Alternative vor und überlegen Sie, ob etwas funktionieren würde, wenn die Alternative wahr wäre. –

+0

Macht Sinn, danke! – Silex