javascript - 如何使用名称和值(数字 ID)填充下拉列表?

标签 javascript angularjs angular-ui-select

如何正确地将下拉列表绑定(bind)到 Controller 变量,而是使用下拉数组的 id 属性而不是值来赋值,仍然使用数组的 name 属性为最终用户显示下拉内容选择?

AngularJS 工作下拉模板,但没有 ID/Value 属性

<ui-select ng-model="ctrl.risk.owner" theme="select2" 
           ng-disabled="ctrl.disabled" style="max-width: 150px"
           title="Choose a person">
  <ui-select-match placeholder="Select/Search User">
    {{$select.selected.name}}
  </ui-select-match>
  <ui-select-choices repeat="user in ctrl.users | propsFilter: {name: $select.search}">
      <div value="user.id" ng-bind-html="user.name | highlight: $select.search"></div>
  </ui-select-choices>
</ui-select>

设置数组(这是我需要 select-ui 下拉库的 user.id 的地方)

$http.get('api/users').then(function(response){
      if (response.data.Succeeded){     
              for (var key = 0; key < response.data.Result.length; key++){
                    user = response.data.Result[key];     
                    $scope.ctrl.users[user.id] = {name: user.name};
              }
              $scope.ctrl.userDone = true;
              return response.data.Result;
       }
       else{
             $scope.ctrl.msg += "<br />"+ 
             $sce.trustAsHtml(response.data);
       }
}); 

最佳答案

ui-select 不使用 value HTML 属性,因此它没有意义。您的选择由您在重复声明中指定的内容表示。

该语句的意思是用户将被用于绑定(bind):

<ui-select-choices repeat="user in ctrl.users | propsFilter: {name: $select.search}">

该语句表示将使用用户 ID 进行绑定(bind):

<ui-select-choices repeat="user.id as (id, user) in ctrl.users | propsFilter: {name: $select.search}">

通常,ng-model 对象将获取您指定的绑定(bind)内容。我认为在 ctrl.risk.owner 中获取用户没有问题,但您必须在代码中期待它,然后才能根据需要获取 user.id。我认为您正在尝试访问此行中选定的 id:

$scope.ctrl.users[user.id] = {name: user.name};

如果确实如此,您只需查看所选用户的 ctrl.risk.owner 即可。

使用 ui-select 提供的示例。我认为这与您正在尝试的最接近:http://plnkr.co/edit/?p=preview

关于javascript - 如何使用名称和值(数字 ID)填充下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57532031/

相关文章:

javascript - array.push() 抛出奇怪的错误

angularjs - 错误 无法在 'open' : Refused to connect 'http://192. 168.XX.XXX:8080/TestApp/addRole/上执行 'XMLHttpRequest':Ionic

javascript - 在 angular-ui 中手动输入文本

html - AngularJS - 如何清除 ui-select 多个选项输入中的查询文本

javascript - Angularjs UI 多选和初始选择

javascript - 在javascript中计算表最后一列中输入值的总和

JavaScript 正则表达式匹配文本字段中的 URL

javascript - jQuery Flot 不透明度取决于值

javascript - 从 Angular 柱方法获取数据

javascript - 已编译的子指令已附加到父级但无法访问父级作用域?