AngularStrap typeahead ng-options - 与模型不同的标签

时间:2014-11-11 21:05:14

标签: javascript angularjs

我在某些地址使用AngularStrap typeahead。我想将选定的地址对象分配给我的ng-model,但是当我这样做时,我失去了只显示一个对象属性作为标签的选项。

示例返回对象:

{ formatted: '1001 Main St', geo: { lat: '123', lng: '234' } }

在视图中:

<input type="text" class="form-control" ng-model="item.venue" ng-options="address as address.formatted for address in getLocation($viewValue)" placeholder="Enter address" bs-typeahead>
 Venue Object: {{ item.venue }}

我原本以为上述方法可行,但它并没有指定&#34;格式化&#34;作为标签值 - 选择后只是空白。做他跟随工作,但它只将格式化的属性分配给模型:

<input type="text" class="form-control" ng-model="item.venue" ng-options="address. address.formatted as address.formatted for address in getLocation($viewValue)" placeholder="Enter address" bs-typeahead>

小提琴:http://jsfiddle.net/cyberwombat/30e63qea/1/

2 个答案:

答案 0 :(得分:2)

我认为您的意思是您希望输入为所选obj的labelobj.label,但希望保留obj的所选信息。

您可以在添加.label

上捕获所选事件的$
  $scope.$on('$typeahead.select', function(v,i){
    console.log(v,i);
    $scope.selected.label =  $scope.selected.formatted_address;
  });

这是plunker

答案 1 :(得分:1)

确定。通过源查看,AngularStrap typeahead似乎是“标签”。意思是如果找到“标签”对象属性,它将使用它。

更新小提琴:http://jsfiddle.net/cyberwombat/nur5oqqa/2/

所以对象必须是:

{ label: '1001 Main St', geo: { lat: '123', lng: '234' } }

代码:

<input type="text" class="form-control" ng-model="item.venue" ng-options="address as address.label for address in getLocation($viewValue)" placeholder="Enter address" bs-typeahead>