背景
项目中经常用到mvc 或mvd ,尤其在qml中经常有如下场景:
一个listview,一个delegete 和 一个 model,但是有时候model会遇到model的属性,会是动态属性,即需要从外部获取的。
比如 :
property var url1 : myobject.getUrl1()
property var url2 : myobject.getUrl2()
ListModel {
id: tidMode
ListElement { name: qsTr("历史记录"); source: url1 }
ListElement { name: qsTr("c收藏夹"); source: url2 }
...
}
其中 ListElement的元素 url是通过外部来动态获取的,此时,qml 就会报错ListElement: cannot use script for property value
如何解决呢?
可通过js方法来创建model即可
property var url1 : myobject.getUrl1()
property var url2 : myobject.getUrl2()
ListModel {
id: tidMode
//ListElement { name: qsTr("历史记录"); source: url1 }
//ListElement { name: qsTr("c收藏夹"); source: url2 }
//...
Component.onCompleted: {
tidMode.append({name: qsTr("历史记录"); source: url1});
tidMode.append({ name: qsTr("c收藏夹"); source: url2});
}
}