将select选项绑定到用户标识

时间:2014-02-12 23:53:46

标签: angularjs

我有一个任务列表,其中可以单击按钮以显示每个任务的选项。弹出窗口中的一个选项是将用户分配给任务。如果有用户,如何预先选择用户?以下是相关代码:

p Assign-to:
select ng-model="user" ng-change="assignUser(task, user)" ng-options="user.id as user.firstName for user in users"
  option value="" -- assign a user --

2 个答案:

答案 0 :(得分:0)

我无法使用您拥有的方法设置所选值,但这个适用于我:

<select id="{{model.id}}" ng-model="model.answer">
  <option ng-repeat="item in model.options" value="{{item.value}}" 
          ng-selected="{{item.value == model.defaultvalue}}"
  >{{item.description}}</option>
</select>

答案 1 :(得分:0)

ng-change对select

不起作用

您可以在此处参考:http://docs.angularjs.org/api/ng.directive:select

根据Adam Zuckerman的回答:

<select ng-model="selectedUser">
    <option value="">-- assign a user --</option>
    <option ng-repeat="user in users" value="{{user}}" 
            ng-selected="{{selectedUser.id === user.id}}">
        {{user.firstName}}
    </option>
</select>

这是一种更简单的方法

其他方法,使用ng-options

首先,您需要了解javascript语言概念:

a = b = {}
a === b // true

通过赋值来引用相同的对象,它们将相等。但是:

a = {}
b = {}
a === b // false

分别分配给对象值,它们不会相等。

因此,如果要绑定模型(选定用户)和默认选项值,则必须执行以下操作:

$scope.users = [.....]
$scope.selectedUser = $scope.users[1] // assign refer to second object 

然后:

<select ng-model="selectedUser" ng-options="user as user.firstName for user in users">
    <option value="">-- assign a user --</option>
</select>

引用相同的对象将正常工作。