Hi François,

The best way to do this is to use QML ListModel. Instead of loading the 
properties in a JS object, you can load them as model properties (via 
http://qt-project.org/doc/qt-5/qml-qtqml-models-listmodel.html#set-method). 
Accessing the properties would be done via "model":

DetailItem {
    label: qsTr("MyProp")
    value: model.myProp
}

If you don't want to use a ListModel, prefer using QtObject instead of Item. 
QtObject provides a non-graphical component to store properties, unlike Item 
that implies having a "box" (x, y, width, height, anchors etc.)

Regards,
Lucien

----- Mail original -----
De: "François K." <daithe...@free.fr>
À: "Sailfish OS Developers" <devel@lists.sailfishos.org>
Envoyé: Mardi 2 Décembre 2014 10:31:46
Objet: [SailfishDevel] Wrap data in Item to get notifiable properties ?

Hi,

I'm writing a small app for SailfishOS in JS + QML (I don't know C++ so please 
don't tell me to do this in C++).

I'm getting data from LocalStorage and hence get a Javascript Object with its 
own properties. Let's call it myObj.
Then I bind some field in a view to these properties :

    DetailItem {
        label: qsTr("MyProp")
        value: myObj.myProp
    }

Now, if I update myObj.myProp, the value of the DetailItem doesn't get updated.
For what I understand, this is normal because the properties of my Javascript 
Object (myObj) aren't notifiable and thus, QML doesn't know it has been updated.

To fix this, I wonder if it's OK to wrap my JS object into a QML Item. This 
would give me notifiables properties and would certainly allow me to get 
working bindings.

What do you think about this ? Is it OK ?

Thanks a lot for your help,

Best wishes,

-- 
François
_______________________________________________
SailfishOS.org Devel mailing list
To unsubscribe, please send a mail to devel-unsubscr...@lists.sailfishos.org
_______________________________________________
SailfishOS.org Devel mailing list
To unsubscribe, please send a mail to devel-unsubscr...@lists.sailfishos.org

Reply via email to