尝试使用AngularJS和ng-options的最新版本(1.5.8)来填充下拉列表。
问题是它正在添加数据类型和值,如下所示:
<select class="possedetail ng-valid ng-dirty ng-valid-parse ng-touched" ng-model="Province" ng-options="p as p for p in provList">
<option value="string:ALBERTA" label="ALBERTA">ALBERTA</option>
<option value="string:BRITISH COLUMBIA" label="BRITISH COLUMBIA">BRITISH COLUMBIA</option></select>
我需要字符串:艾伯塔省&#39; ...
这是我的数据来源:
$scope.provList = ["ALBERTA","BRITISH COLUMBIA","MANITOBA","NEW BRUNSWICK","NEWFOUNDLAND AND LABRADOR","NORTHWEST TERRITORIES","NOVA SCOTIA","NUNAVUT","ONTARIO","PRINCE EDWARD ISLAND","QUEBEC","SASKATCHEWAN","YUKON",];
我已阅读Google文档,在网上搜索并尝试将我的数据源格式更改为[{name:&#34; Alberta&#34;},{name:&#34; BC&#34;}] ..
请帮忙,不管怎么说?
答案 0 :(得分:19)
这可能有点晚了,但在你的ng-options表达式中添加“track by”可以解决你的问题。即。
<select ng-model="Province" ng-options="p for p in provList track by p"></select>
答案 1 :(得分:1)
如果您正在设计Angular应用程序,则不应该关心如何生成<option>
元素以及分配了value
属性。这是视图。 ViewModel是您为其分配的范围变量上设置的内容。
换句话说,您的示例有效。 $scope.Province
将等于所选的省字符串,例如"ALBERTA"
。 Angular为你做翻译。
然后,您可以将其提交到您的服务器,或随身携带它做任何事情:
$http.post("/some/api", {data: $scope.Province})
但是,如果必须,您可以使用<option>
生成ng-repeat
s。效率会更低,更冗长,但它会起作用:
<select ng-model="Province">
<option ng-repeat="p in provList" value="{{p}}">{{p}}</option>
</select>
答案 2 :(得分:-3)
用更多的代码说不出来,你可以做一个小提琴。这很好http://jsfiddle.net/zm0eq6xf/
<div ng-app="myapp">
<fieldset ng-controller="FirstCtrl">
<select
ng-options="p for p in provList"
ng-model="p"></select>
{{ p }}
</fieldset>