ng-selected无效

5

我的问题是ng-selected被设置为true,但选项未被选中

这是我的控制器代码

.controller("PendingInvoiceCtrl", function($scope, $location, safeApply, dataService) {
    var userData = dataService.data();
    var mauth_token = userData.mauthToken;
    var mauth_acntId = userData.thisApartment.account;
    var apt_id = userData.thisApartment.id;

    $scope.house_list = userData.thisApartment.house;
    $scope.selectedHouseId = $location.search().houseId;

    console.log($scope.selectedHouseId);
});

这是我的HTML代码。
 <select ng-model="selectedHouseId">
      <option ng-repeat="house in house_list" ng-selected="{{ house.house_id == selectedHouseId }}" value="{{ house.house_id }}">
           {{ house.house_display_name }}
      </option>
 </select>

以下是我的数据格式:
 {
      house:[0]:{
           house_display_name: "paras, 101",
           house_id: "520755"
      }
 }
4个回答

11
< p > ng- 属性不需要额外的花括号。 尝试使用:

<option ng-repeat="house in house_list" ng-selected="house.house_id == selectedHouseId" ng-value="house.house_id">
    {{house.house_display_name}}
</option>

更好的方法是使用 select 标签的 ng-options 功能。这将导致:

一个更好的方法是使用


8
您的选项标签应该是:
<option ng-repeat="house in house_list" ng-selected="house.house_id == selectedHouseId" ng-value="house.house_id">

它能工作,但在HTML上仍会得到一个额外的选项<option value="? string:385787 ?"></option> 我可以使用<option value="" hidden></option>来隐藏,但那只是hack,我想要一个正确的解决方案,你能帮忙吗? - Siddharth Pandey
@SiddharthPandey 你是什么意思?你能检查一下 house_list.length 是否与选项的数量匹配吗? - Bwaxxlo
长度不是问题,我不知道为什么它会生成相同的东西。 - Siddharth Pandey
1
您需要以不同的方式初始化ng-model(selectedHouseId),因为它的初始值并不总是等同于任何ngOptions,因此它会添加自己的选项(通常带有值“?”或“0”)。 - Tahsis Claus
看起来这是你从dataService接收到的数据。确保它返回的是正确的数据。 - Bwaxxlo
显示剩余2条评论

4

如果同时使用ng-Selected和ng-Model,其优先级并没有明确说明。似乎在某个时候,ng-Model的优先级高于ng-Selected。


我曾经遇到过同样的问题! 在select标签中使用ng-Model,在option标签中使用ng-Selected(带有ng-repeat)。 删除ng-Model后,一切都正常了! 谢谢! - Daniel Santos
那么,你如何连接所选的值? - Ewald Bos

2

我建议你使用Angular指令ng-options。

<select ng-options="house.house_id as house.house_display_name for house in house_list" ng-model="selectedHouseId"></select>

关联的 Plunker:http://plnkr.co/8LGz5o0d2gDRoRHYr4pQ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接