繁体   English   中英

AngularJS ng-options将数据类型添加到选项的值

[英]AngularJS ng-options adds data type to option's value

尝试使用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>

我需要字符串:艾伯塔省......

这是我的数据来源:

$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:“Alberta”},{name:“BC”}] ...

请帮忙,不管怎么说?

这可能有点晚,但在你的ng-options表达式中添加“track by”可以解决你的问题。

<select ng-model="Province" ng-options="p for p in provList track by p"></select>

如果您正在设计Angular应用程序,则不应该关心如何生成<option>元素以及分配了什么value属性。 这是视图。 ViewModel是您为其分配的范围变量上设置的内容。

换句话说,您的示例有效。 $scope.Province将等于所选的省字符串,例如"ALBERTA" Angular为您翻译。

然后,您可以将其提交到您的服务器,或使用它做任何您需要的事情:

$http.post("/some/api", {data: $scope.Province})

但是,如果必须,您可以使用ng-repeat生成<option> 效率会更低,更冗长,但它会起作用:

<select ng-model="Province">
  <option ng-repeat="p in provList" value="{{p}}">{{p}}</option>
</select>

用更多的代码说不出多少,你能做一个小提琴。 这工作正常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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM