Angularjs类型显示'添加'选项如果输入的文本不在列表中

时间:2017-03-24 05:08:47

标签: javascript angularjs typeahead

我正在使用角度typeahead列出来自网络服务的选项。

如果没有从Web服务返回,我想提供一个添加新值的选项。

我找到了一个答案,它将输入的文本添加到本地数组中,当用户提交表单时,可以保存它,但是输入的文本中可能会出错,可能会将错误的数据添加到数据库中。

所以我希望它成为列表中的按钮或选项,这样只有在用户点击该选项时才会添加输入的文本。

<input type="text" ng-model="newData.category" class="form-control" uib-typeahead="category for category in getCategory($viewValue) | filter:$viewValue | limitTo:8" typeahead-on-select="onSelect($item)">

我的预期输出:

enter image description here

1 个答案:

答案 0 :(得分:0)

如果用户选择“添加新类别”,我会创建一个隐藏的输入字段并将其与另一个字段交换

为此,首先添加“添加新类别”作为类别数组中的最后一个值。然后在你的onSelect函数

<input type="text" ng-model="newData.category" class="form-control" uib-typeahead="category for category in getCategory($viewValue) | filter:$viewValue | limitTo:8" typeahead-on-select="onSelect($item)" ng-hide="showAddCategory">

<div ng-show="showAddCategory">
  <input type="text" ng-model="newData.category" class="form-conrol">
  <button>Save</button>
</div>

然后您可以在HTML中执行此操作

div

当用户选择“添加新类别”时,它将隐藏默认输入,然后显示一个没有预先输入的新输入。

如果您使用这种方法,您可能希望有一些方法让他们返回类别列表(即更改newData.catagory以便默认输入再次可见)

注意:我添加了一个button包装并将ng-show保存到隐藏的输入中只是因为您可能需要类似于UI的内容,但这些并不是必需的。您可以将input直接放在fp = open('dataResult.csv', 'w') w = csv.writer(fp, delimiter=',') csvwrite = unicode(li_result) csvwrite_result = csvwrite.encode('sjis') w.writerow(csvwrite_result)