Ошибка необработанного типа при привязке событий к выпадающему списку Kendo - PullRequest
0 голосов
/ 04 июня 2018

Я пытался привязать событие для действия выбора в выпадающем списке Kendo.Я поместил в кавычки для дескрипторов событий, потому что без лишних кавычек обработчик событий отображался так же, как и в коде javascript, и выдавал ошибки.

@(Html.Kendo().DropDownList()
.Name("yearDropDown")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<DropDownListItem>() { new DropDownListItem() { Text = "2015", Value = "2015" }, new DropDownListItem() { Text = "2016", Value = "2016" }, new DropDownListItem() { Text = "2017", Value = "2017" }, new DropDownListItem() { Text = "2018", Value = "2018" } })
.Events(e => {
    e.Select("\"drpDwnForecastYearSelect\"");
})
.Value(userInput.year)
.HtmlAttributes(new { style = "width : 8em" })
)

И я написал этот обработчик также в javascript.Но когда я нажимаю на опцию в раскрывающемся списке, я получаю такую ​​ошибку в консоли

Uncaught TypeError: r[n].call is not a function
    at init.trigger (kendo.all.js:124)
    at init._change (kendo.all.js:32793)
    at Object.<anonymous> (kendo.all.js:32802)
    at i (jquery.min.js:2)
    at Object.add [as done] (jquery.min.js:2)
    at init._click (kendo.all.js:32801)
    at init.d (jquery.min.js:2)
    at init.trigger (kendo.all.js:124)
    at init._click (kendo.all.js:28060)
    at HTMLLIElement.d (jquery.min.js:2)

Проблема, с которой я сталкиваюсь, очень похожа на этот запрос поддержки , но нет разрешениятам и я не могу опубликовать там без покупки премиум.

1 Ответ

0 голосов
/ 04 июня 2018

Не вводите дополнительные двойные кавычки в спецификации обработчика события select

Измените

e.Select("\"drpDwnForecastYearSelect\"");

обратно на

e.Select("drpDwnForecastYearSelect");

Если выне определили глобальную функцию javascript drpDwnForecastYearSelect, тогда консоль отладки браузера покажет

Uncaught ReferenceError: drpDwnForecastYearSelect is not defined
at . . .

Исправить

Определить обработчик выбора как глобальную функцию.

<script>
    function drpDwnForecastYearSelect(e) {
        console.log(e);
    }
</script>

Глобальная область доступна для области JavaScript, отображаемой помощником DropDownList ( обработчик вызывается из замыкания kendo.syncReady () ).Блок сценария, содержащий функцию-обработчик, может появляться до или после помощника.

Неправильно

Определение функции в готовом документе jQuery, например:

    $(function () {
        // Welcome to jQuery document ready 
        function drpDwnForecastYearSelect(e) {
            console.log(e);
        }
    })

не работа.Область действия функции, определенной в замыкании $( document ).ready(), недоступна области действия кода замыкания kendo.syncReady(), предоставляемого помощником DropDownList.

...