我正在尝试在用户导航到“详细信息页面”然后返回到数据透视页面后恢复数据透视控件的selectedIndex属性。
我正在捕获selectedIndex并将其存储在pivot pages unload事件的会话状态中。我无法弄清楚的是什么时候恢复价值。
我试过了页面加载事件。我已经验证了该值已被设置,但似乎其他事件稍后会被触发并覆盖它。
我已经尝试检查会话状态变量是否在pivot onselectionchanged和onitemanimationstart事件中设置,但是在其中任何一个中设置会导致应用程序崩溃。对于记录,异常是:0x80020101 - JavaScript运行时错误。由于错误80020101,无法完成操作。
var sessionState = WinJS.Application.sessionState;
var hub = null;
//in the WinJS.UI.Pages.Define call for the pivot item page
ready: function (element, options) {
hub = element.querySelector(".hub").winControl;
hub.onselectionchanged = function (args) {
//crashes app
if (sessionState.collectionItemSelectedIndex) {
hub.selectedIndex = sessionState.collectionItemSelectedIndex;
}
//code omitted
}
//code omitted
},
unload: function () {
sessionState.collectionItemSelectedIndex = hub.selectedIndex;
console.log('pivot index: ' + sessionState.collectionItemSelectedIndex);
},
//This does fire, and does set the index, but it seems to be overwritten soon after
load: function (uri) {
if (sessionState.collectionItemSelectedIndex) {
hub.selectedIndex = sessionState.collectionItemSelectedIndex;
console.log('pivot index: ' + sessionState.collectionItemSelectedIndex);
}
//taken from base.js
if (!this.selfhost) {
return WinJS.UI.Fragments.renderCopy(uri);
}
},
答案 0 :(得分:0)
所以我解决了这个问题。
通过在onitemanimationstart事件中设置所选索引并在使用后立即将其设置为null,事情现在正在起作用。
然而,它稍微不理想,因为当您导航回枢轴页面时,您会看到第一个枢轴部分片刻,然后它会动画到您离开的部分。有没有人知道一个更好的方法来做这个,一个不会显示那个短暂时刻的第一部分?