通过javascript更改QML GridView模型
Change QML GridView model by javascript
我有一个ListView和一个GridView。想象一下:第一个视图显示类别,第二个视图显示每个类别中的文章。当ListView的当前索引通过javascript更改时,我想动态更改GridView的数据模型。我们该怎么做?
您只需要分配一个新模型。下面是一个基于ListModel文档的示例。此模型在左侧的ListView中显示了模型中的水果。单击委托时,它会将右侧GridView的模型设置为attributes
角色定义的列表。
import QtQuick 1.0
Item {
width: 600; height: 400
ListView {
width: 300; height: 400
model: fruitModel
delegate: Text {
font.pixelSize: 20
text: name
width: 300
MouseArea {
anchors.fill: parent
onClicked: grid.model = attributes
}
}
}
GridView {
id: grid
x: 300; width: 300; height: 400
delegate: Text {
text: description
font.pixelSize: 20
}
}
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
attributes: [
ListElement { description: "Core" },
ListElement { description: "Deciduous" }
]
}
ListElement {
name: "Orange"
cost: 3.25
attributes: [
ListElement { description: "Citrus" }
]
}
ListElement {
name: "Banana"
cost: 1.95
attributes: [
ListElement { description: "Tropical" },
ListElement { description: "Seedless" }
]
}
}
}
这是嵌套模型的一个例子,但也有其他可能性。例如,如果您从数据库中获取数据,也许您只需要更改GridView模型使用的查询,而不需要设置不同的模型。
取决于您的型号。假设CategoriesModel
具有category
角色,ArticlesModel
具有setCategory
方法:
ListView {
model: CategoriesModel {}
delegate: Item {
MouseArea {
anchors.fill: parent
onClicked: {
grid_view.model.setCategory(model.category)
}
}
// ...
}
}
GridView {
id: grid_view
model: ArticlesModel {}
// ...
}
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- ExtJS 5用程序点击actioncolumn gridview
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 将不在模型中的数据返回到mvc控制器
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 我应该如何检查主干.主干.模型更改时查看
- Ext.js从json构建模型关系的问题
- 选择不在GridView-ASP.NET中激发
- 如何使用javascript函数在gridview中按行启用/禁用复选框
- 显示模块模式在Knockout中设置模型的新实例
- 使用导航属性创建Kendo UI网格模型的问题
- Angular,函数在(模型)工厂中返回值
- 如何将本地json数据加载到Extjs数据模型中
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 通过javascript更改QML GridView模型