Javascript 如何在其他页面上调用函数

Javascript 如何在其他页面上调用函数,javascript,qml,qt5,qt-quick,qtquick2,Javascript,Qml,Qt5,Qt Quick,Qtquick2,我在我的问题中找不到答案,所以我想解释一下 我有一些QML页面,我用StackView对象管理我的页面,我想从第2页调用第1页的函数。。。 比如说 //Page 1 Item{ id: page1 function test(){ console.debug("Page 1 man ! "); } ... something } } 我想调用第1页上的测试函数 //Page 2 Item{ id: page2 Compoment.onCompleted: page1.test(); .

我在我的问题中找不到答案,所以我想解释一下

我有一些QML页面,我用StackView对象管理我的页面,我想从第2页调用第1页的函数。。。 比如说

//Page 1
Item{
id: page1
function test(){
   console.debug("Page 1 man ! ");
}
... something 
}
}
我想调用第1页上的测试函数

//Page 2
Item{
id: page2
Compoment.onCompleted: page1.test();
... something 
}
}
有人有办法吗


yekmen

由于范围限制,您无法从另一个页面直接访问函数。所以解决方案是在根项中创建一些代理函数。小例子:

Item {
    id: root
    function proxy(target_page) {
        switch(target_page) {
            case 1: page1.test(); break;
            case 2: page2.test(); break;
            case 3: page3.test(); break;
        }
    }
    Item {
        id: page1
        function test() {
        }
        Component.onCompleted: {
            root.proxy(2);
        }
    }
    Item {
        id: page2
        function test() {
        }
    }
    Item {
        id: page3
        function test() {
        }
    }

}
这不是活生生的例子,只是想法。这里,page1通过根元素函数在初始化时调用page2