Javascript 如何在angular typeahead中获取上一个值

Javascript 如何在angular typeahead中获取上一个值,javascript,angularjs,Javascript,Angularjs,我在输入元素中使用了typeahead。更改时,我可以通过使用选择上的typeahead从$item获取当前值。如何获取上一个值 我已尝试ng单击设置旧值 <input type="text" ng-model="personDetail.brandchainname" typeahead-on-select="redeReferenceId($item, $model, $label, personDetail.id, oldValue)" ng-click="o

我在输入元素中使用了
typeahead
。更改时,我可以通过使用选择上的
typeahead
$item
获取当前值。如何获取上一个值

我已尝试
ng单击
设置旧值

<input type="text"
    ng-model="personDetail.brandchainname"
    typeahead-on-select="redeReferenceId($item, $model, $label, personDetail.id, oldValue)"
    ng-click="oldValue = personDetail.brandchainname"
    typeahead="data as data.name for data in brandChainNames | filter:$viewValue"
    typeahead-editable= 'false'>
 $scope.$watch('field', function (newVal, oldVal) {
   // your task
}


但是,在
typeahead
中,您也可以通过退格来更改值,而这一次旧值仍将来自
ng单击

,您可以使用$scope.watch获取新值和旧值

<input type="text"
    ng-model="personDetail.brandchainname"
    typeahead-on-select="redeReferenceId($item, $model, $label, personDetail.id, oldValue)"
    ng-click="oldValue = personDetail.brandchainname"
    typeahead="data as data.name for data in brandChainNames | filter:$viewValue"
    typeahead-editable= 'false'>
 $scope.$watch('field', function (newVal, oldVal) {
   // your task
}

第一位为什么要使用oldvalue?必须从以前的值中取消引用
personDetail.id
,然后重新引用到新值中。我尝试在select=“redreferenceid($item,$model,$label,personDetail.id,oldvalue,clicked)”ng click=“oldvalue=personDetail.brandchainname;clicked=true;”然后在控制器中,
$scope.redeferenceid=function(…){$scope.clicked=false;}
似乎此作用域与传递的作用域不同。创建一个会很困难。但是,我通过将
单击
作为一个对象来解决这个问题
ng click=“oldValue=personDetail.brandchainname;clicked={'value':true};”

然后我在控制器中将其设置为clicked.value=false;这帮助我区分单击事件和退格事件。从那以后,我通过使用保存prev和curr值的数组解决了prev值的问题。我通过使用ng blur解决了最后一个问题
ng blur=“util.isEmpty(personDetail.brandchainname)?redeferenceId($item,$model,$label,personDetail.id,oldValue),单击“brandchainnames”):“”“
oldval/newVal
中提供各种值<代码>“,
未定义的
等。当您在实际选择值之前部分键入时激发。为此编写代码被证明是非常困难和麻烦的