我正在使用angular的typeahead,并在使用ngModel时遇到了麻烦。
这是我的输入html
<input
type= "text"
ng-model= "symbol"
placeholder= "begin typing"
typeahead= "hit.message for hit in getTypeAheadContents($viewValue)"
typeahead-loading= "loadingSymbols"
typeahead-editable= "false"
typeahead-on-select= "onSelect($item, $model, $label)"
typeahead-min-length= 2
typeahead-wait-ms= 500
class= "form-control"
/>
<input ng-click= "search()" value= "Search!"/>
以下是我的控制器中的代码(暂时非常基本)
$scope.search = function(){
alert($scope.symbol);
}
现在,自动完成代码按预期工作,但是当我点击搜索按钮时,我收到警告消息“undefined”
甚至更奇怪的是我尝试设置
$scope.symbol = "";
在我的控制器的开头,当我单击搜索按钮而没有在我的预先输入中输入任何内容时,我按照预期将空字符串提醒给我。但是,当我在typeahead中键入内容并再次点击搜索时,我再次回到“未定义”状态。很明显,angular的typeahead与ng-model的效果并不是很好,但我不知道该怎么做。
么?
答案 0 :(得分:3)
只需设置typeahead-editable="true"
: - )
答案 1 :(得分:1)
不知道这对你来说是否还是个问题。但是我已经尝试了最新版本的angularStrap(2.1.4),当我将ng-model设置为我设置属性的对象时,我得到了它。
$scope.selectedPart = {}
<input type="text"
class="form-control"
ng-model="selectedPart.part_id"
data-animation="am-flip-x"
ng-options="part.value as part.name for part in parts"
placeholder="Selecteer onderdeel"
bs-typeahead>
某些功能中的某个地方(可能是一个很深的$ watch)
console.log($scope.selectedPart.part_id)
答案 2 :(得分:0)
这并没有真正回答这个问题,但是我通过在getTypeAheadContents函数中设置一个等于用户输入的不同范围变量来解决这个问题,然后使用该变量(而不是&#39;符号&#39;)在搜索功能中。