如果我在ng-init
或ng-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'}
];
答案 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”)