У меня есть следующий код для элемента kendo multiselect.
var newitemtext: string;
var multiselect = t.sender.element.find("#redirectUris-multiselect").kendoMultiSelect({
dataTextField: "text",
dataValueField: "value",
change() {
ClientApplicationsGrid.prototype.changeFuncForMultiselect(this, multiselect);
},
dataBound() {
if ((newitemtext || this._prev) && newitemtext !== this._prev) {
newitemtext = this._prev;
let dataitems = this.dataSource.data();
for (let i = 0; i < dataitems.length; i++) {
const dataItem = dataitems[i];
if (dataItem.value !== dataItem.text) {
this.dataSource.remove(dataItem);
}
}
dataitems = this.dataSource.data();
let found = false;
for (let i = 0; i < dataitems.length; i++) {
const dataItem = dataitems[i];
if (dataItem.value === newitemtext) {
found = true;
}
}
if (!found && newitemtext !== "") {
this.dataSource.add(
{ text: newitemtext + " (Add New)", value: newitemtext });
this.open();
}
}
}}).data("kendoMultiSelect");
Я успешно переместил код из события change () в отдельную функцию ClientApplicationsGrid.prototype.changeFuncForMultiselect (this, multiselect).
Мне нужно как-то сделать то же самое для события dataBound (), потому что у меня будет почти такой же множественный выбор в другом месте, и я хочу повторно использовать код. Но когда я сделал то же самое, что и для change (), я получил «Максимальный вызов трассировки стека». Я думаю, это потому, что я использую переменную newitemtext внутри dataBound (), но я не уверен.
Может ли кто-нибудь помочь мне с этим, пожалуйста?