如果列表中没有新项目,请将其添加到typeahead

时间:2014-08-06 20:48:18

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

我正在使用角度引导类型。我想进行一项增强,如果项目不在列表中,则用户可以添加新项目(可能正在键入的项目显示在列表底部,带有加号按钮或类似内容)

有一种简单的方法可以进行此增强吗?如果没有,还有其他什么可以做到吗?

1 个答案:

答案 0 :(得分:5)

不确定这是否是您正在寻找的内容,但您可以使用保存输入框中当前值的$viewValue变量来执行此操作。您可以将其附加到预先输入结果。如果已选中,请将其添加到结果中以备将来使用...

var states = ['Alabama', 'Alaska' /* , ... */];
$scope.getStates = function(current) {
    var statesCopy = states.slice(0);
    if (current) {
        statesCopy.unshift(current);
    }
    return statesCopy;
};
$scope.onSelect = function (item) {
    states.push(item);
};

<input type="text" ng-model="selected" 
typeahead="state for state in getStates($viewValue) | filter:$viewValue | limitTo:8" class="form-control"
typeahead-on-select="onSelect($item)">

Live Demo

请注意,您需要做更多工作来处理重复项或实时数据源。