【问题标题】:Scrolling problems with kendo-ui Autocomplete in embedded mode (without iframes)嵌入模式下 kendo-ui 自动完成的滚动问题(没有 iframe)
【发布时间】:2015-08-19 00:48:55
【问题描述】:

我目前正在将一个分为 iframe 的网站更改为现在嵌入(使用 AngularJS),没有任何 iframe。

这有一个大问题:我有一个用于选择位置的 Kendo UI 自动完成下拉元素。在自动完成下拉菜单周围/下方的区域中滚动时,iframe 和嵌入的行为完全不同。

旧应用:网站 (iframe) 周围滚动,下拉菜单仍然可见,并与网站的其余部分一起移动,直到您选择了一个项目。 新应用程序:下拉框立即关闭,您必须重新输入一些输入才能再次打开它。不可接受的可用性!

如何获得在嵌入模式下具有旧滚动行为的自动完成下拉菜单(如果不可能,则不必是 Kendo)?

【问题讨论】:

    标签: angularjs autocomplete kendo-ui


    【解决方案1】:

    嗯,我找到了一个适合我的解决方法

    在指令 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 或其他什么也可以观看,但到目前为止还可以。

    请随时改进我的解决方案或发布其他解决方案! :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      相关资源
      最近更新 更多