我有一个使用DelegateModel作为其模型的GridView:
GridView{
function test(idx) {
model.items.get(idx).testFunction()
}
model: DelegateModel{
id: visualModel
model: myModel
delegate: myItem {}
}
}
如果知道委托的索引,如何调用委托的函数或设置委托的属性?
例如如果我尝试调用函数test
,则会收到错误消息
TypeError: Property 'testFunction' of object [object Object] is not a function
我不明白。这是我的代表的顶端
Item {
id: delegateRoot
function testFunction() {
console.log("success")
}
model.items.get(idx)
行错了吗?另外,如何检查/调试是否确实给了我代表?
答案 0 :(得分:1)
您正在模型上调用该函数。但是它在视图的委托中,因此找不到。
临时我不知道如何从视图中获取委托的解决方案。这里的问题是,可能是在您尝试调用该委托时尚未创建该委托。
对于Repeater
,您可以轻松地调用itemAt(index)
来获取它-因为Repeater
总是实例化模型中所有内容的委托。
您很可能希望重构,因此该函数不再是委托的成员,而仅通过获取模型数据(您可以通过get
从模型中检索该数据)来工作并操纵委托通过模型中的角色。
您可以例如扮演“触发器”角色。将委托连接到已更改信号的委托中,并在需要调用函数时递增模型中触发的信号。