2013-02-21 60 views
3

我有一个ng-repeat,我把它放在一个select标签中。 我希望能够修改不同选择上的选定值。 这里是我有: 的HTML如何在ng-repeat中设置ng模型的值?

<div ng-controller="Ctrl"> 
    <div ng-repeat="user in users"> 
     <select ng-model="nbModel" ng-options="numValue.Text for numValue in numValues" ng-change="chooseUser(nbModel, user.id)"> 
         </select> 
     &nbsp;&nbsp;{{user.name}}&nbsp;&nbsp;-&nbsp;{{user.age}} years 
    </div> 
</div> 

的JS

function Ctrl($scope) { 
    $scope.numValues = [ {Id : '0',Text : '0'}, {Id : '1',Text : '1'}, {Id : '2',Text : '2' }];  
    $scope.users = []; 

    $scope.users.push(new User(1, 'Luke', 23)); 
    $scope.users.push(new User(2, 'Maria', 26)); 
    $scope.users.push(new User(3, 'Mike', 45)); 

    angular.forEach($scope.users, function(equip) { 
     //TODO to set the default values for each select 
    }); 

    $scope.chooseUser= function(value, name) { 
     //some traitement   
     //TODO to set a wanted value   
    }; 
}; 

function User(id, name, age) { 
    this.id=id; 
    this.firstnamename = name; 
    this.age = age; 
} 

我无法弄清楚如何手动设置选择的选项。 有帮助吗?

回答

3

你已经到了一半......你需要做的是为你想改变的用户设置ng-model。假设你想改变用户的年龄与选择,它会看起来像这样:

<div ng-controller="Ctrl"> 
    <div ng-repeat="user in users"> 
     <select ng-model="user.age" ng-options="numValue.Text for numValue in numValues"></select> 
     &nbsp;&nbsp;{{user.name}}&nbsp;&nbsp;-&nbsp;{{user.age}} years 
    </div> 
</div> 
+1

谢谢,我看到了这个想法,ng模型可以动态吗?我的意思是类似于ng-model =“userModel [user.id]”?如果是的话,如何更新它从js,$ scope.userModel [1] = ...? – 2013-02-21 18:30:10

+0

是的,如果你愿意,ng-model可以是动态的。 [这是一个简单的例子](http://plnkr.co/edit/K1iNfC5t8lts6z20a6wY?p=preview) – 2013-02-21 18:36:13