0

我正在尝试使用 JavaScript 在应用程序中将少量用户数据存储到 Windows 存储的 roamingFolder 方法/属性中。我正在关注开发中心的示例代码,但没有成功。我的代码片段如下:(或完整项目的 SkyDrive 链接: https ://skydrive.live.com/redir?resid=F4CAEFCD620982EB!105&authkey=!AE-ziM-BLJuYj7A )

filesReadCounter: function() {
roamingFolder.getFileAsync(filename)
    .then(function (filename) {
        return Windows.Storage.FileIO.readTextAsync(filename);
    }).done(function (data) {
        var dataToRead = JSON.parse(data);
        var dataNumber = dataToRead.count;
        var message = "Your Saved Conversions";
        //for (var i = 0; i < dataNumber; i++) {
        message += dataToRead.result;
        document.getElementById("savedOutput1").innerText = message;
        //}
        //counter = parseInt(text);
        //document.getElementById("savedOutput2").innerText = dataToRead.counter;
    }, function () {
        // getFileAsync or readTextAsync failed.
        //document.getElementById("savedOutput2").innerText = "Counter: <not found>";
    });
},

filesDisplayOutput: function () {
    this.filesReadCounter();
}

我在导航器模板的 item.js 文件的 ready 方法中调用 filesDisplayOutput 函数,以检索最后一个会话的数据。但它总是显示空白。我想最多保存 5 个用户可能需要保存的数据。

4

1 回答 1

0

我在按原样运行您的代码时遇到了一些麻烦,但这与问题无关。最重要的是,您实际上并没有阅读该文件。注意这段代码,当 promise 完成时没有thenor来执行。done

返回 Windows.Storage.FileIO.readTextAsync(文件名);

我在您的示例解决方案中破解了这个并且它正在工作......这的典型警告不是生产代码:)

filesReadCounter: function () {
        roamingFolder.getFileAsync(filename).then(
            function (filename) {
                Windows.Storage.FileIO.readTextAsync(filename).done(
                    function (data) {
                        var dataToRead = JSON.parse(data);
                        var dataNumber = dataToRead.count;
                        var message = "Your Saved Conversions";
                        //for (var i = 0; i < dataNumber; i++) {
                        message += dataToRead.result;
                        document.getElementById("savedOutput1").innerText = message;
                        //}
                        //counter = parseInt(text);
                        //document.getElementById("savedOutput2").innerText = dataToRead.counter;

                    }, function () {

                        // readTextAsync failed.
                        //document.getElementById("savedOutput2").innerText = "Counter: <not found>";
                    });
            },
            function () {
                // getFileAsync failed 
            })
    },
于 2013-03-14T00:47:34.553 回答