我有一个listview,我想使用defaultDelegate或customDelegate,具体取决于属性的值。 到目前为止,我已尝试使用组件加载不同的代理:
Component{
id: delegate
Loader {
sourceComponent: type == 3 ? customDelegate : defaultDelegate
}
}
但是,我无法从我的两位代表那里访问我模型中的属性。我有以下错误:
ReferenceError: name is not defined
这是我使用的模型:
ListModel {
id: test
ListElement {
name: "Bill"
team: "554"
type: 2
}
ListElement {
name: "John"
team: "555"
type: 3
}
ListElement {
name: "Sam"
team: "556"
type: 1
}
}
有谁有任何想法,我在这里做错了什么?
答案 0 :(得分:3)
当然,这是一个背景问题。在您的代码中,name
在team
上下文中插入的type
,ListView
和delegate
上下文属性对于内部组件是不可访问的您的委托,因为Loader
在实例化时使用customDelegate
和defaultDelegate
的创建上下文作为父上下文,name
,team
和{{1不要引用具有该上下文链的任何东西。
一种解决方案是将所需信息显式设置为type
的属性(这是有效的,因为Loader
将自身设置为正在加载的组件的上下文对象。
遵循一个工作示例:
Loader
为了进一步阅读和改进,我强烈建议您阅读this。