我在某些地址使用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>
答案 0 :(得分:2)
我认为您的意思是您希望输入为所选obj的label
或obj.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>