我有一些问题。
我的范围内有两个对象: 1)
tasks:
12:
id: 12
user_id: 1
2)
users:
1:
id: 1
username: sergey
我正在尝试使用默认值渲染select(在此示例中,它必须是sergey):
<select class="form-control"
data-ng-model="tasks[task.id].user_id"
data-ng-change="setWorker(task.id)"
>
<option data-ng-repeat="user in users" data-ng-value="user.id" data-ng-selected="{[{user.id == task.user_id}]}">{[{user.username}]}</option>
</select>
但它完成了2个错误(我的问题): 1)在我的选择默认值为空选项 2)在我的选择中,还有一个额外的选项o_O,如:
<option value="? number:4 ?"></option>
首先我认为发生了这种情况,因为服务器响应包含了承诺。我用toJSON解析了所有数据,例如:
$scope.users = data.toJSON();
我还有第三个问题: 在将我的数据和成功查询更新到我的服务器后,例如尝试更改任务中的user_id,我想更新我的范围,我这样做:
$scope.tasks[taksId].user_id = userId;
之后我想执行我自己的函数test(),我试图通过观察者这样做:
$scope.$watch('tasks', function () {
$scope.test();
})
但什么都没发生。你知道吗? = \
答案 0 :(得分:0)
而不是Obsolete
尝试使用ng-repeat
这样:
ng-options
使用<select class="form-control"
data-ng-model="tasks[task.id].user_id"
data-ng-change="setWorker(task.id)"
data-ng-options="user.id as user.username for user in users">
</select>
可以使用非字符串值类型。基本上,这表示“对于users集合中的每个用户,使用user.username中的文本和user.id中的值创建一个选项”。