Html 如果使用角度JS在“选择元素”中选择了默认值,则选定值不会更改

Html 如果使用角度JS在“选择元素”中选择了默认值,则选定值不会更改,html,angularjs,Html,Angularjs,使用ng选项绑定select元素中的数据后,从编辑功能设置所选值,显示错误“无法设置未定义的属性'UID'。但若我从select元素中选择了默认值以外的另一个值,那个么该值将在编辑功能中更改 这是我的选择元素代码: <select name="userRole" id="userRole" ng-model="userRoleModel" ng-options="r.Role for r in roles track by r.UID" class="form-control select

使用ng选项绑定select元素中的数据后,从编辑功能设置所选值,显示错误“无法设置未定义的属性'UID'。但若我从select元素中选择了默认值以外的另一个值,那个么该值将在编辑功能中更改

这是我的选择元素代码:

<select name="userRole" id="userRole" ng-model="userRoleModel" ng-options="r.Role for r in roles track by r.UID" class="form-control select-1">
    <option value="" ng-selected="true">ROLES</option>
</select>
JSON数据

{"ResultData":[{"UID":"1","Role":"Super Admin"},{"UID":"2","Role":"Admin"},{"UID":"2b660a63-c038-4bcd-8fcc-616af7cce4a9","Role":"Operator"},{"UID":"6","Role":"Customer"}]}

除了此代码之外,任何需要的内容都请进行注释。

从角色中选择对象作为默认值,而不是对象内部的属性。因为默认值映射到ng选项中的对象值

                <select     
                ng-value="r"
                ng-model="userRoleModel"
                ng-options="r.Role for r in roles track by r.UID" >
                    <option value="?" selected="selected">
                    </option>
                </select>   

引用:

您在编辑函数中出现此错误,因为在分配其嵌套属性值之前未定义
userRoleModel

此行出现错误
$scope.userRoleModel.UID=userData.RoleID
$scope.userRoleModel
。首先将编辑函数外部声明为空对象,如
$scope.userRoleModel={}
,然后应该可以工作

比如:

$scope.userRoleModel = {}

$scope.GetUserUpdateData = function (userData) {
  $scope.userUID = userData.UID;
  $scope.userName = userData.Name;
  $scope.userUsername = userData.Username;
  $scope.userPassword = userData.Password;
  $scope.userRoleModel.UID = userData.RoleID;
  $scope.userRoleModel.Role = userData.Role;
  $scope.example2model = userData.ChannelUIDs;
}
但最好使用像这样的引用

$scope.userRoleModel = $scope.roles[index];

使用相同的问题,如果未选择默认值,则现在不会更改值,在顶部插入空白值。编辑函数在哪里?@Gaurav Srivastava编辑函数写在DOM元素的当前唯一设置值之上。您如何调用GetUserUpdateData函数以及它的用途是什么?ng repeat
在哪里?我只能看到
ng选项
。问题更可能是未定义
$scope.userRoleModel
并导致错误。@Dhaval Chheda-它起作用,但值来自另一个具有不同参数的JSONname@Ric对不起,我弄错了。ng选项是一条路要走。唯一的问题是它需要映射到对象,而不是对象的属性。@Shantnu使用循环从原始“角色”确定匹配,并递增计数器,直到获得匹配,一旦获得匹配,将其设为默认值,如$scope.userRoleModel=$scope.roles[count];感谢@Shaishab Roy,它起作用了,但是默认值被默认值替换为一个空值是当
userRoleModel
从控制器中更改,然后按预期在UI中自动更改时,我该怎么做才能获得默认值如果您想在UI中显示默认值,那么在选择“从”之前不需要在控制器中分配用户界面
$scope.userRoleModel = {}

$scope.GetUserUpdateData = function (userData) {
  $scope.userUID = userData.UID;
  $scope.userName = userData.Name;
  $scope.userUsername = userData.Username;
  $scope.userPassword = userData.Password;
  $scope.userRoleModel.UID = userData.RoleID;
  $scope.userRoleModel.Role = userData.Role;
  $scope.example2model = userData.ChannelUIDs;
}
$scope.userRoleModel = $scope.roles[index];