2015-06-04 59 views
0

我目前正在修改一個網站,該網站被分成了iframes,現在正在嵌入(使用AngularJS),沒有任何iframe。kendo-ui滾動問題嵌入式模式下的自動完成(無iframe)

這是一個很大的問題:我有一個Kendo UI自動完成下拉元素來選擇位置。關於自動完成下拉菜單週圍/下方區域的滾動,iframe和嵌入的行爲完全不同。

舊應用程序:圍繞滾動的網站(iframe),下拉菜單仍然可見,並與網站的其餘部分一起移動,直到您選擇了一個項目。 新的應用程序:下拉框立即關閉,你必須重新鍵入一些輸入,讓它再次打開。不可接受的可用性!

如何獲得一個自動完成下拉菜單(不一定是Kendo,如果不可能的話),它具有嵌入模式下的OLD滾動行爲?

回答

0

嗯,我找到了一個解決辦法這對我來說工作得很好:

在指令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"> 

在我的情況下,只要沒有選擇項目,我就阻止下拉菜單關閉。

爲此,我添加了默認情況下是錯誤的一個新的布爾範圍的變量,如果下拉菜單打開被設置爲true:

$scope.locationDataSource = new kendo.data.DataSource({ 
    type: "json", 
    serverFiltering: true, 
    transport: { 
     read: function (options) { 
      $scope.keepKendoDropdownOpen = true; 
      someOtherFuncionalityAfterSelectingAnItem(); 
     } 
    } 
}); 

和選擇後再次設置爲false(該指令的k-select的回調)。

如果用戶按下ESC或其他東西,也很好看,但到現在爲止還好。

請隨時讓我的解決方案更好或發佈其他解決方案! :-)