Изменить URL после действия на другой странице - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть 2 папки.В папках находятся 1 и 1 файл.Как я могу изменить URL-адрес 1 файла с помощью второго файла?

assets:

Папка 01
Папка 02
main.qml

main.qml

import bb.cascades 1.4
import "Folder_01"
import "Folder_02"
TabbedPane {
    Menu.definition: MenuDefinition {
        actions: [
            ActionItem {
                onTriggered: {
                    sheet_01.open()
                }
            }
        ]
    }
    Tab {
        id: tab_01
        title: "Tab 01"
        File_01 {
        }
    }
    Tab {
        enabled: false
    }
    attachedObjects: [
        Sheet_01 {
            id: sheet_01
        }
    ]
}

File_01.qml

import bb.cascades 1.4
Page {
    titleBar: TitleBar {
        title: "File 01"
    }
    WebView {
        id: file_01_WebView
    }
}

Sheet_01.qml

import bb.cascades 1.4
import "asset:///Folder_01"
Sheet {
    id: sheet_01
    Page {
        titleBar: TitleBar {
            title: "Sheet 01"
            dismissAction: ActionItem {
                title: "Cancel"
                onTriggered: {
                    sheet_01.close()
                    file_01_WebView.url = "http://google.com"
                }
            }
        }
    }
}

У меня есть в файле "Sheet_01.qml""ошибка" file_01_WebView.url = "http://google.com"

1 Ответ

0 голосов
/ 12 декабря 2018

Это много раз обсуждалось здесь, и в документации Qt об этом совершенно ясно.Из-за ограничения области действия Sheet_01 элемент ничего не знает об элементах вне компонента.Следуя декларативному стилю разработки, компонент должен информировать об изменениях своего состояния, чтобы другие элементы могли среагировать на это.Например:

main.qml

Item {
    id: root
    MyItem {
        id: item1
    }

    MyItem {
        id: item2
        onSomeEvent: item1.doSomeAction();
    }    
}

MyItem.qml

Item {
    id: item
    signal someEvent();
    function doSomeAction() {
        console.log("action executed");
    }
    Component.onComplete: item.someEvent();
}
...