1

winjsのアプリケーションフォルダから画像を読み込む方法

 var item = groupedProducts.getAt(indx);            
 item.img = Windows.Storage.ApplicationData.current.localFolder.path + "\\" + "3766111.jpg";
                    groupedProducts.setAt(indx, item);
                    WinJS.UI.processAll();
4

1 に答える 1

1

以下で使用する getFileAsync 関数など、WinJS で ApplicationData のファイルにアクセスするには、非同期 API を使用する必要があります (これは、アプリのデータ バインディングで使用するヘルパー関数です)。

function getLocalLargeMapTile(item) {
    return new WinJS.Promise(
        function (completed, error, progress) {
            var filename;
            var sourceFolder;

            if (item.latlong) {
                var latandlong = item.latlong.split(", ");
                var lat = latandlong[0];
                var lon = latandlong[1];
                filename = lat + lon + ".png";

                var appData = Windows.Storage.ApplicationData.current;
                sourceFolder = appData.localFolder;

                sourceFolder.getFileAsync(filename).then(function (file) {
                    var mapUrl = window.URL.createObjectURL(file, { oneTimeOnly: true });
                    completed(mapUrl);
                },
                function (error) {
                    handleError(error)
                });
            }
            else {
                filename = "ms-appx:///images/megaphone_256x256.png";
                completed(filename);
            }
        }
    );
}

ヘルパー関数で行っているのは、データに緯度と経度が含まれているかどうかを確認することです。含まれている場合は、ファイル名が一致するファイルを確認します。これらのファイルは Application Data フォルダーにあるため、ファイルを objectURL でラップします。 objectURL で promise を返します。それ以外の場合は、アプリのイメージ フォルダー内の静的ファイルを指す ms-appx URL を返すだけです。プログラム テンプレートからこのヘルパー関数を呼び出す方法を次に示します (宣言型テンプレートではこれを実行できないと思います)。

var image = document.createElement("img");
image.className = "item-image";
image.src = "ms-appx:///images/megaphone_256x256.png";
result.appendChild(image);

// additional code omitted
var promise = mapTileUtil.getLocalMapTile(currentItem);
promise.done(function (mapTileUrl) {
    image.src = mapTileUrl;
});

宣言型テンプレートよりもレンダリングされたマークアップをより細かく制御できるテンプレート関数の詳細については、以下をご覧ください。

http://msdn.microsoft.com/en-us/library/windows/apps/jj585523.aspx

http://go.microsoft.com/fwlink/p/?linkid=231499

一般的な Windows ストア アプリ開発の詳細については、App Builderに登録してください。

于 2013-03-22T15:58:53.930 に答える