代码之家  ›  专栏  ›  技术社区  ›  Tpk43

将数组值绑定到AngularJs中的下拉列表

  •  1
  • Tpk43  · 技术社区  · 7 年前

    我在那里有一个编辑页面,我有一个名为Role的下拉列表,在插入时,我向数据库发送了一个值(比如1,而不是“Role Name”),在检索编辑页面时,我无法在下拉列表中初始化所选文本

    下面是我的html代码

    <label class="adjust1-label-right">Role</label>
    <select id="role" class="adjust-select-combo" ng-options="r.role_name for r in Role_Name track by r.roleid" ng-model="role">
          <option ng-repeat="rol.roleid for rol in Role_Name" value="{{rol.roleid}}">{{rol.role_name}}</option>
    </select>
    

    $scope.role = $scope.Role_Name[0];
    

    我的数据看起来像

    [{"Role_Id":1,"User_Id":10001}]
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   cнŝdk    7 年前

    您的绑定无法工作,因为您正在使用 ng-options 在你的 select 随着 ng-repeat 在你的 options ,只能使用其中一个。

    和使用 ng-value 而不是 value ,这是HTML绑定的方式:

    <select id="role" class="adjust-select-combo" ng-model="role">
       <option ng-selected="rol == role" 
            ng-repeat="rol in Role_Name" 
            ng-value="rol.Role_Id">{{rol.User_Id}}
       </option>
    </select>
    

    演示:

    这是一个工作片段:

    var app = angular.module('app', []);
    
    app.controller('MainCtrl', ['$scope', '$http', function($scope, $http) {
    
      $scope.Role_Name = [{
        "Role_Id": 1,
        "User_Id": 10001
      }, {
        "Role_Id": 2,
        "User_Id": 10002
      }, {
        "Role_Id": 3,
        "User_Id": 10003
      }];
      $scope.role = $scope.Role_Name[1];
    
    }]);
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js"></script>
    
    
    <html ng-app="app">
    
      <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.js"></script>
    
    <body>
    
      <div ng-controller="MainCtrl">
        <select id="role" class="adjust-select-combo" ng-model="role">
       <option ng-selected="rol == role" 
            ng-repeat="rol in Role_Name" 
            ng-value="rol.Role_Id">{{rol.User_Id}}
       </option>
    </select>
      </div>
    
    </body>
    
    </html>
        2
  •  0
  •   Marcus Höglund    7 年前

    你试过只使用ng选项吗

    <select id="role" 
            class="adjust-select-combo" 
            ng-options="r.Role_Id as r.User_Id for r in Role_Name" 
            ng-model="role"></select>
    

    设置所选角色

    $scope.role = $scope.Role_Name[0].Role_Id;