虽然西蒙的回答是一个最佳实践,回答问题实际被要求需要遍历children的ListView的contentItem,像这样:
ListView {
id: list
model: mymodel
delegate: Text {
objectName: "text"
text: name + ": " + number
}
}
for(var child in list.contentItem.children) {
console.log(list.contentItem.children[child].objectName)
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用objectName或委托Item的任何其他属性进行过滤。
您确定要迭代委托吗?在大多数情况下,您希望迭代模型,因为即使ListView您的模型有 100 个条目,也可能只有少数委托。这是因为委托在移出可见区域时会被重新填充。
您需要一个具有函数的模型,例如at()返回给定位置的模型元素。比你可以做类似的事情
ListView {
// ...
function find(convId)
{
// count is a property of ListView that returns the number of elements
if (count > 0)
{
for (var i = 0; i < count; ++i)
{
// `model` is a property of ListView too
// it must have an at() metghod (or similar)
if (model.at(i)["id_"] === convId)
{
return i;
}
}
}
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8972 次 |
| 最近记录: |