由于需要取到ListView
中每个ListElement
的属性,但是在QML中控制台无法打印出对象来观察,在网上找了找,我是很少看到关于这方面的资料,不过后来解决了,举个例子供大家参考:
这里是当时列表结构:
// 商品列表
Rectangle {
id: goodList
width: parent.width
height: parent.height - 60
color: "#eee"
GoodsListModel {
id: goodsModel
}
ListView {
id: sampleListView
anchors.fill: parent
model: goodsModel // concrete model
spacing: 4
delegate: Flickable {
width: parent.width
height: 100
contentWidth: parent.width + 140
contentHeight: 100
boundsBehavior:Flickable.StopAtBounds
// 每个商品列的结构
GoodsDelegate {}
}
}
}
这是GoodsListModel.qml
import QtQuick 2.0
ListModel {
ListElement {
imagePath: "fruit.jpg"
imageName: "猕猴桃"
barcode: "61413543213"
price: "3.00"
}
ListElement {
imagePath: "fruit.jpg"
imageName: "猕猴桃"
barcode: "61413543213"
price: "3.00"
}
ListElement {
imagePath: "fruit.jpg"
imageName: "猕猴桃"
barcode: "61413543213"
price: "3.00"
}
}
当时需要计算这里price
的总和,不知道如何取到,由于控制台打印对象会显示[object Object]
,所以我利用for in
来寻找我需要的属性,最后终于找到啦~
// 计算商品总价格
function getTotal() {
var total = 0;
for (var i = 0; i < goodsModel.count; i++) {
var item = goodsModel.get(i);
total += +item.price;
}
return total;
}
利用组件的get(index)
方法取到model中的某一项,然后再取属性就好了。
有问题欢迎留言!