回答

0

我知道它在幾個方面工作,但都需要更改ui-bootstrap。我想我可以創建一個拉取請求,但不確定我的特定用例是否常見。

1)自定義指令並調用UibTypeaheadController.scheduleSearchWithTimeout方法在輸入元素的焦點上。

指令:

.directive("showSearchResultsOnFocus", function($stateParams) { 
return { 
    require: ['uibTypeahead', 'ngModel'], 
    link: function (scope, element, attr, ctrls) { 
     var typeaheadCtrl = ctrls[0]; 
     var modelCtrl = ctrls[1]; 

     element.bind('focus', function() { 
      if (!$stateParams.search || !modelCtrl.$viewValue) return; 
      typeaheadCtrl.exportScheduleSearchWithTimeout(modelCtrl.$viewValue); 
     }); 
    } 
} 

更新到用戶界面的自舉:

this.exportScheduleSearchWithTimeout = function(inputValue) { 
    return scheduleSearchWithTimeout(inputValue); 
}; 

壞:需要在控制器製作方法公開。只有可用的方法是init方法和範圍是孤立的。不打算從外部控制器打電話。

2)添加新的預輸入屬性,讓焦點設置默認值並顯示結果:

更新到用戶界面的自舉:

var isAllowedDefaultOnFocus = originalScope.$eval(attrs.typeaheadAllowDefaultOnFocus) !== false; 
originalScope.$watch(attrs.typeaheadAllowedDefaultOnFocus, function (newVal) { 
    isAllowedDefaultOnFocus = newVal !== false; 
}); 

element.bind('focus', function (evt) { 
    hasFocus = true; 
    // this was line before: if (minLength === 0 && !modelCtrl.$viewValue) { 
    if ((minLength === 0 && !modelCtrl.$viewValue) || isAllowedDefaultOnFocus) { 
    $timeout(function() { 
     getMatchesAsync(modelCtrl.$viewValue, evt); 
    }, 0); 
    } 
}); 

壞:拉請求UI的引導,但變化也許不是一個常用的功能。在這裏提交了一個PR:https://github.com/angular-ui/bootstrap/pull/6353不知道是否會合並或不使用,直到那時使用分叉。

其他建議?

版本 角:1.5.8,UIBS:2.2.0,引導:3.3.7