ng-选择奇怪的行为

时间:2013-07-21 11:08:56

标签: angularjs

我遇到一个问题,我无法理解,也许有些人可以在“为什么”上找到我。

  1. 我从后端检索用户,让我们说它看起来像这样:

    $ scope.user {   ID:1,   状态:{           ID:1,           标签:测试   } }

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

    $ scope.statusList = [{   ID:1,   标签:测试  },  {   ID:2,   标签:塘路  }]

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

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

    <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对于编辑用户而不复制新变量中的内容非常有用,那么为什么它不起作用呢?

1 个答案:

答案 0 :(得分:0)

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

documentation of select中的一些评论正在谈论你所面临的问题。