0

LoaderSymbian/QML プロジェクトで画面を変更するために全画面コンポーネントをロードするために a を使用しようとしています。これは正しい方法とは思えないので、おそらく明らかな何かが欠けています。

ここで使用する例は、全画面表示の WebView (別名 ChildBrowser) を開く必要がある 1 つの画面上のボタンです。ChildBrowser を再利用可能なコンポーネントにしたいので、URL を渡す必要があります。

私はJavascriptファイルを構築しようとしましたpragma library

.pragma library
var map = {};
function put(key, value) {
      map[key] = value;
}
function get(key) {
      return map[key];
}

より良いタイトルが必要なため、これを と呼びますintent.js

ボタンを保持している画面:

import "intent.js" as Intent

Button {
    onButtonClicked: {
        Intent.put("url", "http://example.com");
        console.log("Going to " + Intent.get("url"));
    }
}

後で、ChildBrowser.qml「intent.js」をインポートしてから、Intent.get("url") を取得します。これはundefined

私の質問は次のとおりです。

  • Loader画面の構築と遷移に意図した方法を使用していますか?
  • 画面間でパラメータをどのように渡しますか?
  • アプリの存続期間全体でどのように状態を維持しますか? Javascript でコントローラーとモデルを構築することに特に興味があります。

これらは初心者の質問だと確信しているので、関連ドキュメントへの一連のリンクがおそらく必要なすべてです。しかし、そうではないと思います。

4

1 に答える 1

1

ローダーは、必要になるまでアイテムを作成しないようにするための良い方法です。

ChildBrowser に「url」プロパティがあると仮定すると、次のようなことができます。

Button {
    onButtonClicked: browser.load("http://example.com")
}
Loader {
    id: browser
    property string url
    function load(u) {
        url = u
        if (status == Loader.Null)
            source = "ChildBrowser.qml"
        else if (status == Loader.Ready)
            item.url = url
    }
    onLoaded: item.url = url
}

「url」プロパティを ChildBrowser に追加することは、単にルート項目にプロパティを設定するだけの問題です。

Rectangle {
    property alias url: webview.url

    WebView {
        id: webview
    }
}
于 2011-02-01T01:59:06.520 に答える