首页
学习
活动
专区
圈层
工具
发布

[角度]
EN

Stack Overflow用户
提问于 2015-11-20 00:23:26
回答 3查看 714关注 0票数 1

我目前在angular中有一个服务返回给我一个状态列表。该数组如下所示:

代码语言:javascript
复制
model.Address.StateList = [
     { Disabled: false,
       Group: null,
       Selected: false,
       Text: "CA",
       Value: "1"
      },
 { Disabled: false,
       Group: null,
       Selected: false,
       Text: "IL",
       Value: "2"
      },
      { Disabled: false,
       Group: null,
       Selected: false,
       Text: "NJ",
       Value: "3"
      }
]

我还从服务中返回了他们实际选择的状态,如下所示:

代码语言:javascript
复制
 model.Address.State = "CA"

我已经搜索了stackoverflow,试图找到一种方法来使其工作,但我不知道如何预先选择列表中的值。

我已经尝试过了:

代码语言:javascript
复制
<select id="State" ng-model="model.Address.State" ng-change="changeState(model.Address.State)" ng-options="option as option.Text for option in model.Address.StateList track by option.Value"></select>

但这并不会预先选择第一个项目。

我让它工作的一种方法是将ng-model更改为"selectedItem“,然后在控制器中写道:

代码语言:javascript
复制
   $scope.selectedItem = responseModel.Address.StateList[0];

但这只选择了第一个项目。

似乎问题是我有一个国家的集合,但我想要的模型只是一个单一的文本。理想情况下,我希望设置要添加到model对象的选定对象,这样在保存时,只需将"model“与所需的所有值一起传递给api即可。

EN

回答 3

Stack Overflow用户

发布于 2015-11-20 00:29:54

有关可能的解决方案,请参阅this JSFiddle

我在这里使用了一个作用域变量selectedState,并在ng-model属性中使用了它,但如果您愿意,也可以将其替换为model.Address.State

由于您将model.Address.StatengModel指令绑定并使用track by option.Value,因此可以将model.Address.State的值设置为要设置为活动的选项的值:

代码语言:javascript
复制
model.Address.State = "1";

如果要改用"CA",可以将ng-model更改为当前作用域的属性:

代码语言:javascript
复制
<select ng-model="model.Address.State" ng-options="option.Text as option.Text for ... track by Text" ...>

$scope.selectedState = "CA";
票数 1
EN

Stack Overflow用户

发布于 2015-11-20 00:31:02

要用于ng-model的值应与在ng-options中使用的值匹配。例如:

代码语言:javascript
复制
model.Address.State = "CA"; // matches the Text property
<select id="State" ng-model="model.Address.State" ng-options="option.Text for option in model.Address.StateList"></select>

如果你想使用Value,你需要把它们匹配起来:

代码语言:javascript
复制
model.Address.State = "1"; // matches the Value property
<select id="State" ng-model="model.Address.State" ng-options="option.Text as option.Value for option in model.Address.StateList"></select>

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2015-11-20 03:08:29

我想通了!

多亏了HERE编写的富有洞察力的指南,我对angular中的ng-options和Select有了更多的了解。

最终的问题是,我需要指定下拉列表中显示的文本与模型中的文本相匹配。让它工作的最后代码是:

代码语言:javascript
复制
 <select id="State" ng-model="model.Address.State" ng-options="option.Text as option.Text for option in model.Address.StateList"></select>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33809241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档