我的剃刀视图中有以下代码:
<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函数?