javascript - 弹出控件将自己隐藏在 ListView 项调用事件中

标签 javascript jquery winjs

如果我在 iteminvoked 事件上调用 flyout 显示函数。弹出窗口会在几分之一秒内自动隐藏。

这是我的代码

<div id="listView"
     class="win-selectionstylefilled"
     data-win-control="WinJS.UI.ListView"
     data-win-options="{
        itemDataSource: Teoco.ListView.data.dataSource,
        itemTemplate: select('.settingsTemplate'),
        selectionMode: 'single',
        tapBehavior: 'directSelect',
        oniteminvoked : name.ListView.selectionChanged,
        layout: { type: WinJS.UI.ListLayout }
}">
</div>
<div id="contactFlyout" data-win-control="WinJS.UI.Flyout">

</div>




 Settings.SettingsModules = (new function(){
        function selectionEventHandler(evt){
            var settingsList = evt.target;
            evt.detail.itemPromise.then(function (invokedItem) {
                var flyout = document.getElementById("contactFlyout")
                flyout.winControl.show(settingsList);
            });

        }
        this.init = function(modules){
            var selectionChangeHandler = WinJS.UI.eventHandler(selectionEventHandler);
            WinJS.Namespace.define("name.ListView", {
                data: new WinJS.Binding.List(modules),
                selectionChanged:selectionChangeHandler
            });

        };
    });


     $(document).ready(function(){
        Settings.SettingsModules.init([{title : "Application"},{title : "Agent"}]);
         WinJS.UI.processAll();

     });

最佳答案

感谢您提出这个问题。我为你调查了这个。看来 ListView 正在以编程方式窃取指针向上(或其他一些事件)的焦点,这会导致 Flyout 轻微消失。这是一个错误,我已经 re-opened a similar issue在我们的 GitHub 上进行跟踪。

与此同时,这里有一个简单的解决方法:

listview.winControl.addEventListener('iteminvoked', function (e) {
    setTimeout(function () { flyout.winControl.show(e.target) }, 0);
});

请告诉我这是否能解决您的问题!

关于javascript - 弹出控件将自己隐藏在 ListView 项调用事件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31176433/

相关文章:

javascript - 创建一个 JS 库并声明其他库所依赖的内容

html - Winjs:将某些工具栏控件放置在左侧

在 Firefox 中使用平滑滚动进行慢速滚动的 Javascript 解决方法

javascript - 为什么我只点击了一个复选框,却调用了所有复选框的点击事件?

javascript - 检查了所有单选按钮,然后获取各自行的 "first td"值,然后在单击提交后立即将所有第一个 td 的值放入 url 中

javascript - jQuery - 使用渐变动画将列表项附加到现有列表

jquery - 固定导航栏将下拉菜单置于最前面

javascript - 为什么 toStaticHTML 会删除 data-* 属性

windows-8 - Windows 8 HTML/JavaScript Metro 应用程序中的双向绑定(bind)

javascript - 如何将文本从一个多重输入复制到另一个