【发布时间】:2016-07-03 11:31:09
【问题描述】:
我有一个 ng-repeat 可以按行显示用户,当单击用户时,它会打开模式弹出窗口以编辑包含所有用户详细信息的用户。当我为用户选择另一个角色并尝试获取新选择的行以传递给 http put 时,它不会给出新选择的项目文本而是仍然返回旧文本
//在表格行中显示用户,点击用户名进行编辑
<tr ng-repeat="item in usersData | filter: searchBox">
<td><a ng-click="openEditUser($index)">{{item.UserName}}</a></td>
<td>{{item.EMail}}</td>
<td>{{item.RoleName}}</td>
<td style="text-align: right;">{{item.IsActive ? 'Yes' : 'No'}}</td>
</tr>
当模式弹出窗口打开时,我从 API 获取所有角色并将其添加到 <select> 字段
//获取所有角色并添加到选择字段
$http.get('mydomain.com/api/Users/GetAllRole').then(function (response) {
$rootScope.myData = {};
$rootScope.myData = response.data;
});
// 这里 ng-model="selectedItem.RoleId"
<select ng-required="true" ng-model="selectedItem.RoleId" class="form-control"
ng-options="item._id as item.RoleName for item in myData">
<option value="">Select</option>
</select>
在这里,当我在 <select> 字段中为用户选择另一个角色并尝试获取 $scope.selectedItem.RoleId 时,它会给出新的选定 RoleId 但是当我尝试从 @987654326 获取 $scope.selectedItem.RoleName @field 它没有给出新的选中项,而是返回旧的选中项
$scope.EditUser = function(){
$http.put("domain.com/api/Users/UpdateUser", {
_id: $scope.selectedItem._id,'RoleId': $scope.selectedItem.RoleId, 'EMail': $scope.selectedItem.EMail, RoleName : $scope.selectedItem.RoleName, IsActive: $scope.selectedItem.IsActive
}).then(function (response) {
$route.reload();
$scope.ok();
$scope.simpleSuccess();
}, function (error) {
$scope.ok();
$scope.simpleError();
});
};
【问题讨论】:
标签: javascript angularjs angularjs-ng-repeat angularjs-http http-put