Kendo ui kendojs模板数据绑定单击事件不工作

Kendo ui kendojs模板数据绑定单击事件不工作,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我使用的是KendoJS网格,我的.js文件中有以下代码: var viewModel = kendo.observable({ people: new kendo.data.DataSource(...), isActive:true, friends: new kendo.data.DataSource(...), selectionChanged: function(){... } }); $(document).ready(function

我使用的是KendoJS网格,我的.js文件中有以下代码:

var viewModel = kendo.observable({

    people: new kendo.data.DataSource(...),

    isActive:true,
    friends: new kendo.data.DataSource(...),
    selectionChanged: function(){...
    }
});

$(document).ready(function () {
    kendo.bind($("#sampleGridContainer"), viewModel);
});
在我的.html文件中,我有一个剑道网格:

<div id="sampleGridContainer">
    <div data-role="grid"
         data-columns="[...]"
         data-editable="{ 'mode': 'popup', 'template': kendo.template($('#sampleTemplate').html()) }"
         data-bind="source: people"></div>
</div>


<script id="sampleTemplate" type="text/x-kendo-template">
    <form id="sampleForm">
       ...

       <div data-container-for="somedropdown" class="k-edit-field">
            <input name="somedropdown" id="somedropdown"
                 data-role="dropdownlist"
                 data-type="text"
                 data-text-field="name"
                 data-value-field="value"
                 data-bind="value: someValue, visible: isActive, source: friends, click: selectionChanged" />
       </div>           

       ...
    </form>
</script>
现在,在我的下拉输入元素中,someValue、isActive和friends变量正常工作-事实上,下拉列表显示得很好。但问题是没有调用click event selectionChanged。如果我从模板中删除它,事件将开始工作,但我的问题是,当同一范围内的所有其他变量都可以在模板中访问时,为什么不调用event selectionChanged


非常感谢您的帮助

我也遇到了这个问题,我的解决方法是在网格的编辑事件上初始化kendoDropDownList

edit: function (e){
   e.container.find("input[name='somedropdown']").kendoDropDownList({
      dataTextField: "name",
      dataValueField: "value",
      data-bind="value: viewModel.someValue, visible: viewModel.isActive, source: viewModel.friends, click: viewModel.selectionChanged"
   });
}
然后,html将如下所示:

<div data-role="grid"
   data-columns="[...]"
   data-editable="{ 'mode': 'popup', 'template': kendo.template($('#sampleTemplate').html()) }"
   data-bind="source: people, events: { edit: onEdit }">
</div>

<script id="sampleTemplate" type="text/x-kendo-template">
    <form id="sampleForm">
       <div data-container-for="somedropdown" class="k-edit-field">
            <input name="somedropdown"/>
       </div>
    </form>
</script>

希望这对您有用。

谢谢您的回答。是的,我已经用这种方式工作了,但是因为有很多问题,编辑方法充满了冗余代码。我只是想知道为什么除了函数之外,其他所有东西都可以在同一范围内访问。