Angular-bootstrap typeahead + ng-click / ng-focus

时间:2016-11-27 12:49:47

标签: angularjs twitter-bootstrap bootstrap-typeahead angular-bootstrap

在我的应用中,我使用How to split data into 3 sets (train, validation and test)?组件,这样:

<input type="text" ng-model="selected" placeholder="Start typing to select an object" uib-typeahead="obj as obj.name for obj in objectList | filter:{name:$viewValue}" class="form-control" typeahead-show-hint="true" typeahead-min-length="0" />

一切运作良好,但用户觉得关注和放松是不方便的。清除输入字段以再次查看完整的建议列表。所以我想添加一个功能:一旦用户关注它就清除输入字段并再次显示建议列表。但这样做是天真的方式:

<input ... ng-click="selected = null;" />

<input ... ng-focus="selected = null;" />

不起作用 - 打字只是停止工作。有什么解决方案吗?谢谢。

1 个答案:

答案 0 :(得分:0)

可能最简单的解决方案是为此目的引入以下指令:

.directive('resetTypeahead', function () {
    return {
      require: 'ngModel',
      link: function (scope, element, attrs, ngModel) {
        element.bind('click', function (e) {
          var viewValue = ngModel.$viewValue;
          if (viewValue) {
            ngModel.$setViewValue('');
            ngModel.$render();
          }
        });
      }
    }
  })

Demo: plunker