我遇到一个问题,我无法理解,也许有些人可以在“为什么”上找到我。
我从后端检索用户,让我们说它看起来像这样:
$ scope.user { ID:1, 状态:{ ID:1, 标签:测试 } }
我从后端检索所有状态的列表
$ scope.statusList = [{ ID:1, 标签:测试 }, { ID:2, 标签:塘路 }]
我想显示一个选择输入,包含状态列表并预先选择用户状态
在我的模板上,我有以下内容:
<select ng-model="userStatus" ng-options="status.label for status in statusList"></select>
在我的控制器中,我尝试了以下
案例1:预选工作
function findObject(listObject, Object){
for(var i in listObject){
if(listObject[i] == Object) {return listObject[i]};
}
return listObject[0];
}
$scope.userStatus = findObject($scope.statusList, $scope.user.status);
案例2:不工作
$scope.userStatus = $scope.user.status
案例3:不工作
$scope.userStatus = {id:2,label:toro}
案例4:不工作
在我的模板上,我直接提出以下内容
<select ng-model="user.status" ng-options="status.label for status in statusList"></select>
为什么案例2和案例3不会预先选择选择框??? 更重要的是,case4对于编辑用户而不复制新变量中的内容非常有用,那么为什么它不起作用呢?
答案 0 :(得分:0)
因为角度使用===
(但==
具有相同的效果)而不是angular.equals()
来将每个选项与预选选项进行比较。由于您有两个不同的对象,因此即使对象具有相同的键和值,比较也会返回false。
documentation of select
中的一些评论正在谈论你所面临的问题。