首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >软“重启”Windows 8应用

软“重启”Windows 8应用
EN

Stack Overflow用户
提问于 2012-10-29 05:33:15
回答 1查看 949关注 0票数 2

我首先要说的是,我理解新的Windows 8应用程序生命周期,以及现在是如何100%由用户决定是否终止应用程序。所以,我猜我想要找到的是一种伪重启我的应用程序的方法,尽管我对其他建议持开放态度,因为我对现代UI应用程序的设计非常陌生。

我正在构建一个与Web2.0服务接口的应用程序,该服务需要通过OAuth进行身份验证。幸运的是,Windows8 WebAuthenticationBroker让这一切变得简单:它显示一个异步模式窗口,其中包含web框架,以允许用户登录,并且在登录完成后,我可以提供一个回调方法。

现在,很明显,如果我还没有在roamingSettings.values中为用户存储会话密钥,我只想显示这个登录屏幕。我在Visual Studio中使用了Grid App模板,一旦应用程序被激活,我就在default.js中执行这些函数(检查roamingStorage、调用WebAuthBroker等)。现在,Grid App模板提供了一个data.js,允许我定义一些我想要获取的REST端点。主要问题是,在用户通过身份验证之前,我无法获取这些REST端点!然而,它们仍然必须(至少,我认为)在data.js中提前声明。因此,我现在要做的是避免在用户未登录时出现错误,如下所示:

代码语言:javascript
复制
if (roamingSettings.values[sessionKey]){
   list = getFeedItems(); // my function that issues all the REST calls
} else {
   list = new WinJS.Binding.List();
}

如果在身份验证完成后手动重新启动应用程序,这很好用,但我真的更希望有一种方法,在身份验证完成后完全异步重新加载应用程序。我已经在这上面花费了大量的时间,我感到非常恼火,因为我已经看到其他应用程序这样做了(例如,Instametrogram)。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-29 08:14:54

要回答这里的核心问题,您如何软重启:window.location.reload()就是您所需要的一切。这只是在适当的位置进行刷新。

但是,您实际要做的是重置ListView实例上的数据源--您所需要做的就是在运行时获得该控件,并将数据源重新分配给它。例如:

代码语言:javascript
复制
var lv = document.getElementById("myListView");
lv.winControl.itemSource = list;

当应用程序当前将列表分配给listview时,您拥有的应用程序中也应该包含此示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13113226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档