10

我试图简单地获取以前的值,以及从下拉列表中新选择的值。在此示例中,下拉列表中预先填充了分配给用户的当前组。

当下拉列表更改时,我希望能够返回旧值和新值。我已经可以得到旧值,但我不知道如何返回新值。

控制器代码:

// User Object
userAccess = [{"user_name":"dodsosr11",
                  "group_level":1,
                  "user_id":500,
                  "group_id":10,
                  "group_name":"Conferences_Admins"},
              {"user_name":"keatikj09",
                  "group_level":1,
                  "user_id":250,
                  "group_id":10,
                  "group_name":"Conferences_Admins"},
              {"user_name":"malinag10",
                  "group_level":1,
                  "user_id":492,
                  "group_id":10,
                  "group_name":"Conferences_Admins"}];

//Group Object
groupAccess = [{"group_name":"Conferences_Admins",
                   "id":10,
                   "level_id":1},
               {"group_name":"ticket_sales",
                   "id":59,
                   "level_id":3},
               {"group_name":"Web Developers",
                   "id":1,
                   "level_id":1}];


$scope.reassignUser = function(){
    var oldGroup = this.user.group_id;
    var newGroup = ?????

};

HTML:

<tr ng-repeat="user in userAccess">
    <td>{{ user.user_name}}</td>
    <td>
        <select ng-change="reassignUser()" 
                ng-model="user.group_name" 
                ng-options="g.group_name as g.group_name for g in groupAccess">
        </select>
    </td>
</tr>

我在这里使用下面第一个响应中提供的手表示例创建了一个小提琴。 http://jsfiddle.net/LHz9D/1/

4

3 回答 3

18

像这样试试

看法

<select ng-model="selected" ng-change="change(selected, {{selected}})">

JS

$scope.change = function(newObj, oldObj){
   console.log(newObj);
   console.log(oldObj);
}
于 2015-09-12T02:57:52.560 回答
12

您可以使用 ng-click,因为单击发生在更改之前,您可以像这样注册旧值

<select ng-model="selected" ng-change="change(selected, oldValue)" ng-click="oldValue = selected">

并在控制器中

$scope.change = function(newValue, oldValue){
    //do if's in case you use null or empty values
    if ( oldValue ) {
        //do something
    }   
    if ( newValue ) {
        //do something
    }
}
于 2015-02-03T10:15:07.107 回答
0

像这样做:

$scope.$watch('user.group_name', function(newValue, oldValue){

});

无需再ng-change使用

于 2014-02-20T13:31:09.023 回答