代码之家  ›  专栏  ›  技术社区  ›  Soham Banerjee

设置选择的特定选项

  •  0
  • Soham Banerjee  · 技术社区  · 6 年前

    我试图更新表中的一行,所以在编辑模式下,我需要提取现有数据并将其填充到一张卡中。文本框没问题,但选择有问题。我无法获取选择以显示已获取的现有选项。

    我的分数:

        <select class="textbox-style4" data-ng-options="obj.text for obj in segment track by obj.value" data-ng-model="u_segment">
                                        </select>
    

    以下是初始化选择的方式:

        $scope.segment = [ {
            "text" : "B2B",
            "value" : "0"
        }, {
            "text" : "B2C",
            "value" : "1"
        } ];
    

    下面是我如何设置它的值(尝试两种方法):- 1)

        $scope.u_segment = selected.segment;
    

    (二)

        $scope.u_segment.value = selected.segment;
    

    但它(select)仍然保持空白,尽管其他(文本字段)已填充。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Aleksey Solovey    6 年前

    您正在选择 obj ,所以你的 selected.segment 必须是整个对象: {"text" : "B2B", "value" : "0"} (例如)

    下面是一个演示:

    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
    
      var selected = {
        "segment": {
          "text": "B2C",
          "value": "1"
        }
      };
    
      $scope.segment = [{
        "text": "B2B",
        "value": "0"
      }, {
        "text": "B2C",
        "value": "1"
      }];
      
      $scope.u_segment = selected.segment;
    });
    <!DOCTYPE html>
    <html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    
    <body>
    
      <div ng-app="myApp" ng-controller="myCtrl">
    
        <select class="textbox-style4" data-ng-options="obj.text for obj in segment track by obj.value" data-ng-model="u_segment">
        </select>
        {{u_segment}}
    
      </div>
    
    </body>
    
    </html>

    如果您不知道整个对象,但只知道它的某些属性(如 value ,您需要搜索它(在循环中):

    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
    
      var selected = {
        "segment": "0"
      };
    
      $scope.segment = [{
        "text": "B2B",
        "value": "0"
      }, {
        "text": "B2C",
        "value": "1"
      }];
      
      for(var i=0; i<$scope.segment.length; i++){
        if($scope.segment[i].value == selected.segment){
          $scope.u_segment = $scope.segment[i];
        }
      }
    });
    <!DOCTYPE html>
    <html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    
    <body>
      <div ng-app="myApp" ng-controller="myCtrl">
    
        <select class="textbox-style4" data-ng-options="obj.text for obj in segment track by obj.value" data-ng-model="u_segment">
        </select>
        {{u_segment}}
    
      </div>
    
    </body>
    </html>