Windows 8网格模板JS应用程序,CSS操作不会显示在groupedItems视图中的所有选定项目上
Windows 8 Grid Template JS App, CSS manipulations dont show on all selected items in groupedItems view
我正在使用Win8网格视图模板来显示新闻网站的信息。在下面的菜单栏中,我实现了一个关闭标题的功能,这样只有图片仍然可见。
这个函数在一个"global.js"文件中,该文件包含在"default.html"中,所以它在任何地方都可用,看起来像这样:
//function to turn titles off and on
function titleToggle() {
var titles = document.getElementsByClassName("item-overlay");
for (var i = 0; i < titles.length; i++) {
if (Global.titlesAreOn) {
titles[i].style.display = "none";
}
else {
titles[i].style.display = "";
}
}
Global.titlesAreOn = !Global.titlesAreOn;
};
因此,当我从菜单栏调用这个函数时,它适用于第一个项目,但当我滚动groupedItems视图(hubview)的末尾时,标题仍然存在。当我滚动回到开头时,标题也在那里。
我还在"groupedItems.js"的ready()
函数中调用titleToggle函数,以检查是否根据全局变量显示标题。当我这样做的时候(每当我回到hubpage时),它会一直工作,正如预期的那样。
ui.Pages.define("/pages/groupedItems/groupedItems.html", {
navigateToGroup: function (key) {
nav.navigate("/pages/groupDetail/groupDetail.html", { groupKey: key });
},
ready: function (element, options) {
appbar.winControl.disabled = false;
appbar.winControl.hideCommands(["fontSizeBt"]);
appbar.winControl.showCommands(["titleToggle"]);
if (Global.titlesAreOn == false) {
Global.titlesAreOn = true;
Global.titleToggle();
}
我制作了一个短视频来展示这个问题,因为它有点难以解释-->http://youtu.be/h4FpQf1fRBY我希望你明白了?
当我从ready()函数调用它时,为什么它能工作?有人有主意吗?它是某种自动项目缓存以获得更好的性能吗?如何解决这一问题?
问候和感谢!
首先,这就是为什么会发生这种情况——WinJS使用单页导航来获得应用程序体验。这意味着,当你导航到一个新页面时,实际上你没有。相反,内容将从页面中删除,新内容将加载到同一页面中。在您按下按钮的那一刻,可能不是所有元素都已加载到DOM中,因此您的函数无法操作它们。这就是为什么当您从ready()函数调用它时,它是有效的——所有内容都加载在DOM中。通常最好在ready()函数中执行操作。
关于向左向后滑动并且项目再次重新加载标题时的行为-由于某种原因,listView项目正在重新加载。也许你使用的是新闻网站上的实时数据,而它们又用listView控件的模板刷新了。我不知道,但没关系。我认为隐藏元素不是最好的方法。最好有两个模板——一个带有title元素,另一个没有。按钮单击处理程序应该获取listView控件(必须加载它们)并更改它们的模板。
ready: function (element, options) {
var button = document.getElementById('btn');
button.addEventListener("click", btnClickHandler);
}
处理者:
function btnClickHandler(e) {
var listView = document.getElementById("listView").winControl;
var template2 = document.getElementById("template2");
listView.itemTemplate = template2;
};
- 如何使用javascript从主svg对象动态创建svg视图框
- 正在使用$location.path(.)路由ng视图
- angular.js没有'无法在PhoneGap中处理视图标记
- 如何包含特定于每个视图angularjs的javascript文件
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- Ajax Live搜索发布到Laravel视图
- backbone.js无法渲染视图
- 根据某些条件在视图之间切换
- ng视图外的链接重定向到ng视图内的页面
- 如何在Jquery中发布后将值从视图返回到控制器
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 使用Scala Play Framework视图中的键检索映射值
- FF视图源|脚本高亮显示为红色
- 如何使bxslider仅在移动视图中处于活动状态
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 在Rails中更新Div,而不更改更新请求后的视图
- 如何在Ionic Android中将Javascript注入到web视图中
- Windows 8网格模板JS应用程序,CSS操作不会显示在groupedItems视图中的所有选定项目上