Angularjs 从下拉列表中获取旧值和新值
我试图简单地从下拉列表中获取上一个值和新选择的值。在本例中,下拉列表预先填充了分配给用户的当前组 更改下拉列表时,我希望能够返回旧值和新值。我已经可以得到旧值,但我不知道如何返回新值 控制器代码:Angularjs 从下拉列表中获取旧值和新值,angularjs,ng-repeat,ng-options,Angularjs,Ng Repeat,Ng Options,我试图简单地从下拉列表中获取上一个值和新选择的值。在本例中,下拉列表预先填充了分配给用户的当前组 更改下拉列表时,我希望能够返回旧值和新值。我已经可以得到旧值,但我不知道如何返回新值 控制器代码: // User Object userAccess = [{"user_name":"dodsosr11", "group_level":1, "user_id":500, "group_id"
// 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:
{{user.user_name}
我使用下面第一个响应中提供的手表示例创建了一个小提琴 这样做:
$scope.$watch('user.group_name', function(newValue, oldValue){
});
无需再使用
ng change
您可以使用ng click,因为click发生在更改之前,您可以像这样注册旧值
<select ng-model="selected" ng-change="change(selected, oldValue)" ng-click="oldValue = selected">
像这样试试
查看
<select ng-model="selected" ng-change="change(selected, {{selected}})">
如果我在其中抛出警报以显示oldValue和newValue,则在呈现表时会触发警报-但当我实际更改下拉列表时,不会触发警报,尽管在其他地方我可以看到user.group\u名称已更新。@Photovor这是因为您有ng repeat。然后,您应该在
userAccess
@Photovor中监视每个用户
,例如,$scope.$watch('user[0].group_name',…
将监视第一个用户的group_name
属性如果我这样做,在表呈现并显示第一个警报后,我会收到一个错误:error:[$rootScope:inprog]我也不知道要观看多少用户,因为它是完全可变的。这只在使用单个输入/选择字段时有用。您也不应该使用ng click
,因为如果您选择输入文本而不是在输入字段内单击,则不会触发此事件。相反,您应该使用ng focus
!…如果您hange tong change=“change(selected,{{selected | | null'}}})”
,angular不会抱怨如果最初没有设置selected,因为当它没有设置时,angular会尝试执行change(selected,)
,这会导致js错误并停止代码执行这是一个很好的解决方案,但我不明白它为什么会工作。{}在对象更改发生之前传递文本?
$scope.change = function(newValue, oldValue){
//do if's in case you use null or empty values
if ( oldValue ) {
//do something
}
if ( newValue ) {
//do something
}
}
<select ng-model="selected" ng-change="change(selected, {{selected}})">
$scope.change = function(newObj, oldObj){
console.log(newObj);
console.log(oldObj);
}