2013-09-09 2 views
2

Моего HTML:ListView не срабатывает SelectionChanged

<div id="listViewBoxOffice" 
    data-win-control="WinJS.UI.ListView" 
    data-win-options="{ itemTemplate: select('#movieThumbnailTpl'), selectionMode: 'single' }"> 
</div> 

Моего JavaScript:

WinJS.UI.Pages.define("/pages/home/home.html", { 
    // This function is called whenever a user navigates to this page. It 
    // populates the page elements with the app's data. 
    ready: function (element, options) { 
     api.getBoxOffice().done(this.boxOffice, this.errBoxOffice); 

     listViewBoxOffice.winControl.addEventListener('selectionchanging', this.selectionchanging); 
     listViewBoxOffice.winControl.addEventListener('selectionchanged', this.selectionchanged); 

    }, 
    boxOffice: function (movies) { 
     var list = new WinJS.Binding.List(movies); 
     listViewBoxOffice.winControl.itemDataSource = list.dataSource; 
    }, 
    errBoxOffice: function (err) { 
     debugger; 
    }, 
    selectionchanged: function (evt) { 
     console.log('changed'); 
    }, 
    selectionchanging: function (evt) { 
     console.log('changing'); 
    } 
}); 

Моей проблема:

события SelectionChanged никогда не увольняет. Редактирование выбора события уволено, но с плохим значением в newSelection

ответ

3

Хотя документация не так понятна, как я думаю, это должно быть, вам нужно установить свойство tapBehavior в "toggleSelect", чтобы элемент был полностью выбран , По умолчанию это invokeOnly, и при этом он не полностью выбирает элемент. Он кликает, но не выбран.

Существует достойный пример, расположенный в MSDN documentation.

Если вы храните вне копию экземпляра listViewBoxOffice, то из событий, вы можете получить текущий список через обещание:

listViewBoxOffice.selection.getItems().done(function(items) { 
    // do something with the items... 
}); 
+0

Да , работайте отлично с свойством, установленным toggleSelect – Tuizi

0

пожалуйста, попробуйте Пункт вызова. Вот ссылка Msdn Item invoked Winjs Listview

И попробуйте соответствующим образом изменить выбор. Также, если это не работает или вы хотите, чтобы выбор был изменен только тогда, пожалуйста, разместите в шаблоне, который вы создали. Вам нужно будет пройти весь код :)

3

Чтобы проверить, что событие selectedchanged работает или нет, щелкните правой кнопкой мыши элемент listview. Я думаю, что когда мы просто нажимаем только элемент listview, ему нужно событие iteminvoke, и для выбора мы нужно щелкнуть правой кнопкой мыши по элементу. Ниже приводится код snipet которого обжиг SelectionChanged события

<div id="UserListView" data-win-control="WinJS.UI.ListView" style="border-top: 5px solid #000; min-width:500px;" 
      data-win-options="{ 
           selectionMode:'multi', 
           itemTemplate:select('#itemsList'), 
           layout:{  
           type:WinJS.UI.GridLayout}}" 
     > 

    </div> 

и в JS

UserListView.addEventListener("selectionchanged", selection); 

function selection(evt) { 
     var test = "testing"; 


    } 

установить точку останова, и вы можете проверить в еф типа = «SelectionChanged»

+0

Работайте правой кнопкой мыши. благодаря – Tuizi

 Смежные вопросы

  • Нет связанных вопросов^_^