其实我有这段代码:
import "class1"
import "class2"
Item {
id: myItem
property variant myVar: 0;
anchors.fill: parent;
Component {
id: compClass1
class1 { id: class1ID
anchors.fill: myItem;
}
}
Component {
id: compClass2
class2 {
anchors.fill: myItem;
}
}
Loader { id: myLoader }
function update() {
switch(myID.myVar) {
case 0:
myLoader.sourceComponent = compClass1;
classID.myFunction();
break;
case 1:
myLoader.sourceComponent = compClass2;
break;
}
}
}
当我想调用一个函数时出现问题,我收到一个错误:TypeError:表达式'class1ID.myFunction'[undefined]的结果不是函数。
P.S:类'class1'已经有一个名为'myFunction()'的函数
答案 0 :(得分:7)
如果您想访问class1
功能,则需要使用item
上的Loader
媒体资源。这是一个示例:
Rectangle {
id: myItem
width: 300
height: 300
color: "yellow"
Component {
id: compClass1
Rectangle {
id: class1ID
color: "blue"
width: myItem.width
height: myItem.height
function function1() {
console.log("I am in class1");
}
}
}
Component {
id: compClass2
Rectangle {
color: "red"
width: myItem.width
height: myItem.height
function function1() {
console.log("I am in class2");
}
}
}
Loader { id: myLoader }
MouseArea {
property int nbClicks: 0
anchors.fill: parent
onClicked: {
if(nbClicks % 2 == 0 ) {
myLoader.sourceComponent = compClass1;
} else {
myLoader.sourceComponent = compClass2;
}
myLoader.item.function1();
nbClicks++;
}
}
}