javascript - Windows 8 移动应用程序 - 获取在线数据并显示 javascript

标签 javascript windows-8 microsoft-metro windows-store-apps winjs

我是 Windows 8 移动应用程序开发的新手。

我正在使用 Javascript/HTML5 自定义“网格应用程序”并尝试修改 data.js 以获取数据并填充“SampleDate”数组。

已完成从网络提要中获取数据,但问题是由于请求是异步的,因此执行会继续进行而无需等待响应。

数组总是变空,但是当我尝试将数组数据记录到控制台时,它会在获取后正确记录。

请给我一个解决方案,以便我可以填充和查看获取的数据。

这就是我如何更改默认的 generateSampleData() 方法;

WinJS.xhr({ url: "http://www.yamu.lk/feed/" })
       .done(function complete(result) {

           console.log(result.responseXML);
           var items = result.responseXML.querySelectorAll("item");
           for (var n = 0; n < items.length; n++) {
               sampleItems[n] = { group: sampleGroups[0], title: items[n].querySelector("title").textContent, subtitle: "Item Subtitle: 1", description: items[n].querySelector("description").textContent, content: itemContent, backgroundImage: lightGray };
               console.log(items[n].querySelector("title").textContent);

           }


           },
           function error(error) {

           },
           function progress(result) {

           });

        return sampleItems;

最佳答案

您的问题源于这样一个事实,即您的 ListView 没有直接绑定(bind)到 sampleItems 数组,而是绑定(bind)到一个绑定(bind)列表,该绑定(bind)列表将 sampleItems 推送到它上面。查看 data.js 的第 12 行:

 generateSampleData().forEach(function (item) {
    list.push(item);
});

您要做的是等待将您的数据推送到绑定(bind)列表中,直到从网络服务中检索到它。一种方法是让 generateSampleData() 函数返回 WinJS.xhr promise 而不是 sampleItems 数组。所以 generateSampleData() 变成:

return WinJS.xhr({ url: "http://www.yamu.lk/feed/" });

第 12 行变为:

generateSampleData().done(function complete(result) {
       console.log(result.responseXML);
       var items = result.responseXML.querySelectorAll("item");
       for (var n = 0; n < items.length; n++) {
           list.push({ group: sampleGroups[0], title: items[n].querySelector("title").textContent, subtitle: "Item Subtitle: 1", description: items[n].querySelector("description").textContent, content: itemContent, backgroundImage: lightGray });
           console.log(items[n].querySelector("title").textContent);
       }});

或者类似的东西。

一定要看看如何 binding lists工作以获取更多信息。

关于javascript - Windows 8 移动应用程序 - 获取在线数据并显示 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15128173/

相关文章:

javascript - 创建对象的更简洁的方法

javascript - 无法从 mapsDispatchToProps 访问 "props"

javascript - 在可变宽度站点的两侧均匀隐藏图像

javascript - 如何使用 Jasmine 测试调用异步函数的函数

c# - 使用 Linq 表达式在 SQLite 3 中更新

c# - 错误 : DEP0500 : The folder "...\Debug\AppX" could not be deleted. 访问路径 'resources.pri' 被拒绝

c++ - Windows 应用商店应用程序 - 添加项目引用警告

.net - 手动创建临时证书

windows-8 - 如何在 Windows 8 Metro 应用程序 C# 中将保存缩略图图像存储在设备中

windows - 在 Windows Phone 8 设备中获取电池电量?