2015-07-02 49 views
0

如果我調用flyout show function iteminvoked event。彈出窗口自動隱藏自己的秒數。Flyout將自己隱藏在列表視圖iteminvoked事件

這裏是我的代碼

<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(); 

    }); 

回答

1

感謝提出這個問題。我爲你考慮這個。似乎ListView是通過編程方式將注意力集中在指針向上(或其他事件)上,導致輕鬆解除Flyout。這是一個錯誤,我在我們的GitHub上跟蹤了re-opened a similar issue

在此期間,這裏有一個簡單的解決方法:

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

讓我知道如果這能解決您的問題!