我正在使用Kendo UI构建分层数据网格,我使用MVVM方法进行小部件绑定。 以下是我想要制作的分层网格的 DEMO 。但这里的例子使用的是jQuery,而不是MVVM。
如何使用viewModel
使用data
属性将detailInit
事件绑定到我的MVVM
?
我想使用下面的代码绑定事件,但它不起作用:
JS:
var viewModel = kendo.observable({
......
..........
dataGridDetailInit: function (e) {
//Here I want to catch the detailInit event of the dataGrid
},
..........
......
});
HTML(剑道模板):
<!-- Datagrid -->
<div data-role="grid"
data-columns="[
{'field':'FullName', 'title':'Full Name'},
{'field':'Email', 'title':'Email'},
{'field':'HomeTel', 'title':'HomeTel'},
{'field':'Mobile', 'title':'MobileTel'},
{'field':'Contact_Type', 'title':'Contact Type'},
]"
data-bind ="source: address_book_datagrid_observable.datasource,
events: {
detailInit: dataGridDetailInit
}"
data-pageable='{
refresh: false,
pageSizes: true,
buttonCount: 5,
}'
data-navigatable = "true"
data-resizable = "true"
data-no-records= "true"
data-messages = '{
noRecords: "There is no data to be displayed"
}'
>
</div>
答案 0 :(得分:0)
好的,所以在研究时我遇到了this link。
在这个问题上,Telerik的一位工程师断言:
关于如何完成事件绑定的可以通过data attributes配置所有Kendo小部件。建立一个 声明性地支持分层网格,但是请有 请记住:detailInit事件不应该通过事件绑定 绑定,但通过数据属性。
使用detailInit
使用viewModel
(数据属性)将MVVM
事件绑定到data-detail-init
的正确方法,如下所示:
<!-- Datagrid -->
<div data-role="grid"
data-columns="[
{'field':'FullName', 'title':'Full Name'},
{'field':'Email', 'title':'Email'},
{'field':'HomeTel', 'title':'HomeTel'},
{'field':'Mobile', 'title':'MobileTel'},
{'field':'Contact_Type', 'title':'Contact Type'},
]"
data-bind ="source: viewModel.datasource"
data-detail-init="viewModel.dataGridDetailInit"
data-pageable='{
refresh: false,
pageSizes: true,
buttonCount: 5,
}'
data-navigatable = "true"
data-resizable = "true"
data-no-records= "true"
data-messages = '{
noRecords: "There is no data to be displayed"
}'
>
</div>