如何从winjs中的Application文件夹中读取图像

时间:2013-03-22 14:08:21

标签: winjs

如何从winjs中的Application文件夹中读取图像

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

1 个答案:

答案 0 :(得分:1)

您需要使用异步API来访问WinJS中ApplicationData中的文件,例如下面使用的getFileAsync函数(这是我在其中一个应用程序的数据绑定中使用的辅助函数):

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,指向app的images文件夹中的静态文件。以下是我从程序模板中调用此辅助函数的方法(我不认为您可以使用声明性模板执行此操作):

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