0

我有一个我无法理解的问题,也许有些问题可以启发我“为什么”。

  1. 我从后端检索用户,假设它看起来像这样:

    $scope.user { id:1, status:{ id:1, label:test } }

  2. 我从后端检索所有状态的列表

    $scope.statusList = [{ id:1, label:test }, { id:2, label:toro }]

  3. 我想显示一个选择输入,包含状态列表并预选用户状态

在我的模板上,我有以下内容:

<select ng-model="userStatus" ng-options="status.label for status in statusList"></select>

在我的控制器中,我尝试了以下操作

案例一:预选工作

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>

为什么case 2和case 3不会预选选择框???更重要的是,case4 对于编辑用户而不在新变量中复制所有内容非常有用,那么为什么它不起作用呢?

4

1 回答 1

0

因为角度使用===(但==会产生相同的效果)而不是angular.equals()将每个选项与预选选项进行比较。由于您有两个不同的对象,因此即使对象具有相同的键和值,比较也会返回 false。

文档中的select几条评论都在谈论您面临的问题。

于 2013-07-21T11:16:17.590 回答