无法将使用ASP.NET MVC帮助程序生成的Kendo DropDownList中的事件绑定到以后定义的处理函数

时间:2017-12-20 17:55:30

标签: jquery asp.net-mvc razor kendo-ui kendo-asp.net-mvc

我的剃刀视图中有以下代码:

<div id="divMethod" class="form-group">
<label class="control-label col-xs-4">
    <span>Payment Method</span>
</label>
<div class="col-xs-8">
    @(Html.Kendo()
          .DropDownList()
          .Name("typeDropDown")
          .Items(items =>
          {
              items.Add().Text("CreditCard").Value("card");
              items.Add().Text("Electronic Check").Value("bank");
          })
          .Value(Model.DefaultMethod)
          .Events(e => e.Change("selectPaymentMethod")))
</div>

(...)

<script>
    function selectPaymentMethod() {
        var type = $("#typeDropDown").val();
        if (type === "bank") {
            // Do some stuff here
        }
        else {
            // Do other stuff
        }
    }
</script>

这与所有examples for this provided by Telerik的风格相匹配。如果我将此视图作为对整页请求的响应加载,它可以正常工作;但是如果我通过Bootstrap模式窗口中的AJAX调用加载它,它会在尝试将标准输入元素转换为花式剑道下拉列表时抛出错误。 做了一些挖掘我发现kendo在输入后立即添加了这个html片段:

kendo.syncReady(function(){jQuery("#typeDropDown").kendoDropDownList({"change":selectPaymentMethod,"dataSource":[{"Text":"Credit Card","Value":"card"},{"Text":"Electronic Check","Value":"bank"}],"dataTextField":"Text","dataValueField":"Value"});});

但似乎在通过AJAX加载时,kendo.syncReady事件在浏览器完成解析整个HTML之前被触发,因此selectPaymentMethod函数尚不存在。

问题:有没有办法在页面加载完成之后推迟启动syncReady函数?

0 个答案:

没有答案