【问题标题】:Render specific element in input from a list - AngularJS在列表的输入中呈现特定元素 - AngularJS
【发布时间】:2014-08-07 17:42:50
【问题描述】:

我正在渲染选择选项如下:

<select ng-model="curUserId" ng-options="u.id as u.name for u in users"></select>  

在控制器代码中:

$scope.users = [{"id":1, "name":"abc"}, {"id":2, "name":"def"}, ...]  
$scope.curUserId = 2;  //Selected User

这会加载用户 def 的选择框,因为 ng-model 持有 curUserId 值。
我需要在应该显示 selectedUser 的输入框中执行相同的操作,一种方法是将范围变量分配给输入框,然后在控制器中遍历用户列表并获取选定的用户。

for(var i=0;i<$scope.users.length){
    if($scope.users[i] == $scope.curUserId)
    {
        $scope.selUser = $scope.users[i].name;
        break;
    }
}  

有没有其他方法可以让我在 AngularJS 中获取 selUser 而不是遍历列表。
谢谢!

【问题讨论】:

    标签: javascript angularjs angularjs-scope


    【解决方案1】:

    你可以绑定到模型而不是id:

    <select ng-model="curUser" ng-options="u as u.name for u in users track by u.id"></select> 
    

    在控制器代码中:

    $scope.users = [{"id":1, "name":"abc"}, {"id":2, "name":"def"}, ...]  
    // coming from server
    $scope.curUser = {"id":2, "name":"def"};  //Selected User
    

    【讨论】:

    • 问题是 curUser 值是从服务器发送的,并且值不是对象。
    • 然后使用“track by”来实现对象相等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    相关资源
    最近更新 更多