使用ng-if重新定义ng-model

时间:2014-07-25 07:03:19

标签: javascript angularjs

所以我提前输入一个类型,用户可以在输入表单后选择选项。如果搜索数据存在,则数据描述会自动填充到textarea中。但是,如果搜索数据不存在,描述框会自动填充搜索数据,这不是我想要的,因为它应该是一个空字符串,因为它不存在。

<input type="text" required class="form-control form-control-modal" ng-model="newTreatment.async_selected_treatment" typeahead="treatment as treatment.service for treatment in searchTreatments($viewValue)" typeahead-editable="false" typeahead-on-select="searchTreatment($item)" focus="true" placeholder="CPT Code" >

<textarea class="form-control required form-control-modal" rows="3" ng-if="newTreatment.async_selected_treatment.id == 'null'" ng-model="newTreatment.async_selected_treatment.description" placeholder="Add a Description" ></textarea>

我写了ng-if,但它没有按预期工作。我需要基本检查是否

newTreatment.async_selected_treatment.id

为null(因为它在后端不存在),那么我需要

newTreatment.async_selected_treatment.description 

什么都不返回

图片供参考

我对处理这个问题的其他建议/想法持开放态度

工作

enter image description here 不工作 enter image description here

1 个答案:

答案 0 :(得分:0)

您可以设置typeahead-editable="false"并添加ng-blur指令,请参阅此处:

http://plnkr.co/edit/vcJsfd5ZuwYvirpIGAOx?p=preview

HTML:

Model: {{selected | json}}
<input type="text" typeahead-editable="false"  ng-blur="clear()" ng-model="selected" typeahead="state for state in states | filter:$viewValue | limitTo:8" class="form-control">

JS:

$ scope.clear = function(){

if ($scope.selected === undefined) {

  $scope.selected = '';

}