2017-09-13 24 views
0

得到了一個很難解決的bug。我正在使用ui-select實施多選控制。ui-select在點擊時沒有下降

正如您可以從該站點的塊中看到的那樣,當您單擊輸入時,您的目的是獲得一個下拉列表。

隨着我的嘗試,我沒有得到任何東西,當我點擊輸入,除非我先點擊列表,然後在列表下方約1cm(這是實際的ul)。

否則,它會工作,如果我開始輸入(它過濾和搜索)。其他一切也都可以使用 - 選擇on-remove處理程序。

我甚至複製粘貼AngularJS UI團隊在他們的網站上的東西。

<ui-select multiple ng-model="ctrl.multipleDemo.selectedPeople" theme="bootstrap" ng-disabled="ctrl.disabled" sortable="true" close-on-select="false" style="width: 800px;"> 
<ui-select-match placeholder="Select person...">{{$item.name}} &lt;{{$item.email}}&gt;</ui-select-match> 
<ui-select-choices repeat="person in ctrl.people | propsFilter: {name: $select.search, age: $select.search}"> 
    <div ng-bind-html="person.name | highlight: $select.search"></div> 
    <small> 
    email: {{person.email}} 
    age: <span ng-bind-html="''+person.age | highlight: $select.search"></span> 
    </small> 
</ui-select-choices> 
</ui-select> 

那麼,爲什麼我點擊的實際ul,而不是input(這是它在給定的plunks是如何工作的)?

更多信息。上面我提到我必須先點擊input,然後點擊它下面1cm。這是因爲ul在點擊input時被渲染,但它被賦予不透明度爲0.我發現爲什麼在選擇JavaScript代碼中發生了這種情況,但註釋掉它並沒有真正解決任何問題。它適用於第一次點擊,但所有後續點擊次數需要再次低於1釐米(即在ul)。

起初我以爲我的使用animate可能是原因,但我刪除了這個問題並沒有解決。

我準備了一個plunk我已經確定了與我的項目有什麼不同。我在select.js文件的第1455行添加了debugger聲明。在下面的塊中,處理程序被$動畫 api連接爲輸入事件。在plunk中,程序執行到該處理程序(大概是因爲事件被觸發)。在我的項目中,它永遠不會燃燒。這是處理程序:

$select.$animate.on('enter', dropdown, function (elem, phase) { 
if (phase === 'close' && needsCalculated) { 
    calculateDropdownPosAfterAnimation(); 
    needsCalculated = false; 
} 
});           

奇怪的是,它永遠不會開火。

任何幫助,將不勝感激。乾杯。

+0

請發佈演示在掠奪者,演示你的情況 –

+0

@MaximShoustin不幸的是我不能重現在一個龐然大物的問題。它完美地工作在plunk。我發現如果我在選擇庫中註釋掉'dropdown [0] .style.opacity = 0'的每個實例,它都可以工作。但從維護的角度來看,這是不可取的。 – onefootswill

+0

@MaximShoustin我在問題的底部添加了一些更多細節。我已經將問題磨練到了播出事件的失敗。 – onefootswill

回答

0

所以這是在UI選GitHub的頁面中的錯誤和open issue。在我的情況下,我使用ngAnimatemulti-select功能。

0

試試下面的代碼...

<ui-select multiple ng-model="ctrl.multipleDemo.selectedPeople" 
theme="bootstrap" sortable="true" close-on-select="false" style="width: 
800px;"> 
<ui-select-match placeholder="Select person...">{{$item.name}} &lt; 
{{$item.email}}&gt;</ui-select-match> 
<ui-select-choices repeat="person in ctrl.people | propsFilter: {name: 
    $select.search, age: $select.search}"> 
    <div ng-bind="''+person.age | highlight: $select.search | highlight: 
    $select.search"></div> 
    </ui-select-choices> 
</ui-select> 

供您參考:https://codepen.io/mfunkie/pen/bKAaI

相關問題