我有一個KendoUI組合框的MVC控件,它不會提前設置更改事件。在渲染時,頁面控制器在其自己的更改事件中設置墊片&。KendoUI組合框更改事件多次運行
奇怪的是,這個事件被調用兩次:
- 當我改變所選擇的項目
- 當我從控制點擊即可
問:什麼我做錯了嗎?
問:難道我們應該在現有的Kendo ComboBox上覆蓋改變事件嗎?
MVC控制:
正如你所看到的,我這裏沒有定義任何客戶端事件...
@(Html.Kendo().ComboBox()
.Name("ddlTechnician")
.Filter("contains")
.Placeholder("Select Technician...")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>() {
new SelectListItem() { Text = "Frank", Value = "1" },
new SelectListItem() { Text = "Suzie", Value = "2" },
new SelectListItem() { Text = "Ralph", Value = "3" }
})
.Suggest(true)
.HtmlAttributes(new { style = "width:300px;" }))
頁面控制器:
而且,我只定義一次事件在這裏。我也證實該事件是不是已經發射前的頁面控制器設置它
$(document).ready(function() {
var PageController = (function ($) {
function PageController(options) {
var that = this,
empty = {},
dictionary = {
elements: {
form: null
},
instances: {
ddlTechnician: null
},
selectors: {
form: 'form',
ddlTechnician: '#ddlTechnician'
}
};
var initialize = function (options) {
that.settings = $.extend(empty, $.isPlainObject(options) ? options : empty);
dictionary.elements.form = $(dictionary.selectors.form);
// Objects
dictionary.instances.ddlTechnician = $(dictionary.selectors.ddlTechnician, dictionary.elements.form).data('kendoComboBox');
// Events
dictionary.instances.ddlTechnician.setOptions({ change: that.on.change.kendoComboBox });
};
this.settings = null;
this.on = {
change: {
kendoComboBox: function (e) {
// This is getting called MULTIPLE TIMES
console.log('kendoComboBox RAN');
}
}
}
};
initialize(options);
}
return PageController;
})(jQuery);
var pageController = new PageController({});
});
那麼你的問題是什麼? – Orilux
對不起人,但你有GOT開玩笑!我們處於危險境地嗎?我們真的必須「以問題的形式回答」嗎?人們能否在這裏看到SIMPLE推理? 事件正在運行TWICE ....並且不應該。 –
對不起,我的意思不是諷刺或任何事情。這有助於明確界定問題。 – Orilux