提前Angular uib,typeahead-is-open不起作用

ASR*_*ASR 2 javascript angularjs angular-ui-bootstrap

我有一个尖锐的uib-typeahead。这是我创建的plunkr的链接。https://plnkr.co/edit/8XwhSXsZlyd0oKSljS9t?p=preview

我使用了typeahead-is-open属性。

我想要的是,当我单击uib-typeahead时,它应该打开并显示所有值。我假设将typeahead-is-open设置为true即可完成这项工作。它是否正确?当前,在将typeahead-is-open设置为true时,不会打开typeahead。

这是我的html

<input ng-click = "myFunc()" click-outside="typeaheadIsOpen = false;" type="text" ng-model="selected" uib-typeahead="state for state in states | filter:$viewValue | limitTo:8" typeahead-is-open="typeaheadIsOpen" class="form-control">
Run Code Online (Sandbox Code Playgroud)

我的JS

$scope.myFunc = function() {
   $timeout(function() {
       $scope.typeaheadIsOpen = true;
       $scope.$digest();
   })
}
Run Code Online (Sandbox Code Playgroud)

我已经将typeahead-is-open绑定到“ typeaheadIsOpen”变量。单击typeahead时,我将调用myFuc(),它将变量typeaheadIsOpen设置为true。

但是提前输入无法打开。我做错什么了吗?

Max*_*kyi 5

看来您无法使用typeahead-is-open属性来控制是否显示预输入弹出窗口。这是源代码中的相关部分:

UibTypeaheadController

//binding to a variable that indicates if dropdown is open
var isOpenSetter = $parse(attrs.typeaheadIsOpen).assign || angular.noop;
...
scope.assignIsOpen = function (isOpen) {
    isOpenSetter(originalScope, isOpen);
};
Run Code Online (Sandbox Code Playgroud)

此属性用于在打开typeahead时获取用于更新作用域的表达式,但不用于从作用域获取值并且未设置任何相关的观察程序。