ng select不与父div ng-repeat一起使用

时间:2018-08-10 12:24:38

标签: html angularjs

如果我在ng-initng-selected中使用精确的文本进行比较,那么例如可以正常工作。 ng-init="status='OPEN'",但是当我使用循环变量data.status时,此方法不起作用。有什么建议吗?

<div ng-repeat="user in filtered = userList | filter:search">
   <select ng-selected="{{user.status == item.id}}" ng-options="item.name for item in item track by item.id" ng-model="status" name="status">
   </select>
</div>

$scope.item = [
    {id: 'OPEN', name: 'OPEN'},
    {id: 'RESCHEDULE', name: 'RESCHEDULE'},
    {id: 'CANCEL', name: 'CANCEL'},
    {id: 'CLOSED', name: 'CLOSED'}
];

1 个答案:

答案 0 :(得分:0)

尚不清楚您到底想做什么,我想您可能想一口气做更多的事情,而应该进一步分解。突出的一件事是您使用的ng-selected错误。

首先,您不需要将条件包装在车把{{ }}中。 (这意味着绑定到JavaScript对象的2种方式,在这种情况下没有任何意义)。

第二,ng-selected伪指令不能应用于选择元素,而只能应用于选项元素。

要做我想做的事情(预先选择一个选项)取决于您的工作方式。这有几种方法

2种方式绑定

请记住,使用ng-model绑定到的数据是用2 way binding绑定的,这意味着选择内容将与基础数据匹配。在这种情况下,您无需在模板中做任何花哨的事情。

<div ng-repeat="user in userList">
    <select ng-options="item.name for item in itemList track by item.id" ng-model="user.selectedItem">
    </select>
</div>

您只需在控制器中处理它即可

//This shows a static example. Change to whatever is appropriate, probably in a for loop etc
$scope.userList[1].selectedItem = $scope.itemList[1] 
在选择内

ng-repeat

或者,您可能希望采用在select元素内使用ng-repeat的方法。然后,您可以逐个选项地更详细地指定行为。

<div ng-repeat="user in userList">
    <select ng-model="user.selectedItem">
        <option ng-repeat="item in itemList" ng-selected="user.status === item.id">
    </select>
</div>

(注:为了清楚起见,我已经编辑了一些变量名,例如,将“ item”更改为“ itemList”)