我希望我的头衔不会太混乱。首先是一个例子。我有以下代码配置Kendo UI数据源的读取操作。我试图根据所选的公司ID过滤所有读取,但是当页面加载时,我的getSelectedCompanyId
函数只被调用一次。下面的代码太长,不能包含所有内容,所以只是摘录。
$(function () {
function getSelectedCompanyId() {
var id = $("#CompanyId").val();
return id;
}
$("#CompanyId").kendoDropDownList({
change: function () {
grid.dataSource.read();
}
});
var departmentIndexDataSource = new kendo.data.DataSource({
transport: {
read: {
url: '@Url.Action("ListForCompanyIdJson", "Department")' + '?companyId=' + getSelectedCompanyId(),
type: "GET"
},
调用ListForCompanyIdJson
时,始终使用下拉列表中选择的值调用$("#CompanyId").kendoDropDownList()
操作。我希望每当我调用grid.dataSource.read()
时都会调用此函数。
我意识到这可能对Kendo的内容非常具体,但也许我可以通过简单的JavaScript闭包和一些帮助解决这个问题。
答案 0 :(得分:3)
您可以为grid.dataSource.read()
安装替换函数,该函数始终首先调用您的函数,然后调用grid.dataSource.read()
。
例如:
grid.dataSource.oldRead = grid.dataSource.read;
grid.dataSource.read = function() {
// call your function here
return grid.datasource.oldRead.apply(this, arguments);
}
或者,如果您希望能够有时和另一次调用一个,您可以创建一个提供新行为的新方法,并在需要时使用它:
grid.dataSource.myread = function() {
// call your function here
return grid.datasource.read.apply(this, arguments);
}