嗯,我找到了一个适合我的解决方法:
在指令 html 中,我为事件 k-close 添加了回调。在控制器的这个回调中,我在控制器中使用以下代码阻止了关闭事件的默认行为(当然是在特定条件下):
$scope.closeCallback= function (e) {
if (someConditionForWhichDropdownShouldntBeClosed) {
e.preventDefault();
}
};
这是指令的 HTML:
<input
ng-model="model"
kendo-auto-complete="source"
k-data-source="locationDataSource"
k-select="selectLocation"
k-close="closeCallback">
在我的情况下,只要没有选择任何项目,我就会阻止关闭下拉菜单。
为此,我添加了一个新的布尔范围变量,默认情况下为 false,如果打开下拉菜单,则设置为 true:
$scope.locationDataSource = new kendo.data.DataSource({
type: "json",
serverFiltering: true,
transport: {
read: function (options) {
$scope.keepKendoDropdownOpen = true;
someOtherFuncionalityAfterSelectingAnItem();
}
}
});
选择后再次设置为false(在指令的k-select的回调中)。
如果用户按 ESC 或其他什么也可以观看,但到目前为止还可以。
请随时改进我的解决方案或发布其他解决方案! :-)