ng-model不使用typeahead

时间:2014-10-22 15:29:39

标签: angularjs angularjs-scope undefined typeahead angular-ngmodel

我正在使用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的效果并不是很好,但我不知道该怎么做。

么?

3 个答案:

答案 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;)在搜索功能中。