2014-01-09 3 views
3

У меня есть такой код в моем проекте:Кендо UI для цикла связывание данных

<script id="menuTemplate" type="text/x-kendo-template"> 
    # for(var i=0; i < menus.menu.length; i++){ # 
    <li id="menu-#= i#" data-bind="events: {click: menuClick}" class="menu-item"> 
     <div>#= menus.menu[i].name #</div> 
    </li> 
    # } # 
</script> 
<div data-role="view" id="menuPage" data-model="menuViewModel"> 
    <ul id="menuListView" data-role="listview" data-template="menuTemplate" data-bind="source: dataSource"></ul> 
</div> 

<script> 
    $(document).ready(function(){ 
    var dataSource = new kendo.data.DataSource({ 
    transport: { 
     read: { 
      url: "data/test.json", 
      dataType: "json", 
     }, 
    }, 
    schema: { 
     data: function(data) { 
      return data; 
     } 
    }, 
}); 

var menuViewModel = kendo.observable({ 
    dataSource: dataSource, 
    menuClick: function(e) { 
     alert(e); 
    } 
}); 
kendo.bind($(document.body), menuViewModel); 
}); 
</script> 

Так что у меня ListView товаров, и я хочу связать клики на них. Проблема заключается в том, что щелчок привязывается только к первому элементу списка, поэтому предупреждение срабатывает только тогда, когда я нажимаю на элемент с идентификатором «menu-0». Что я пишу неправильно и как правильно привязать обработчик, так что функция menuClick будет обработчиком всех элементов списка?

Заранее благодарен!

+0

Не могли бы вы опубликовать пример того, что вы получаете обратно от данных/test.json? – Icestorm0141

ответ

4

список Обертывание элементов в DIV решает проблему:

<script id="menuTemplate" type="text/x-kendo-template"> 
<div> 
    # for(var i=0; i < menus.menu.length; i++){ # 
    <li id="menu-#= i#" data-bind="events: {click: menuClick}" class="menu-item"> 
     <div>#= menus.menu[i].name #</div> 
    </li> 
    # } # 
</div> 
</script> 
+0

Обертка в div не работает для меня ... –

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