javascript - ng-option 在 Angularjs 中设置默认值

标签 javascript angularjs

我在将默认值绑定(bind)到 ng-option 时遇到问题。我已经搜索了我的问题的答案,但似乎找不到。

我的问题是,一个模型有 3 个级联选择

默认值

vm.roomData.branch = 'Lucena';
vm.roomData.building = 'mhq';
vm.roomData.roomFloor = '3rd Floor';

html

<div class="col-md-4">
    <label for="branch">
        <strong>Branch</strong>
    </label>
    <select ng-options="loc as loc.branch for loc in vm.locations" class="form-control" ng-model="vm.roomData.branch">
    </select>
    <small id="emailHelp" class="form-text text-muted">Select branch.</small>
</div>
<div class="col-md-4">
    <label for="building">
        <strong>Building</strong>
    </label>
    <select ng-options="loc as loc.name for loc in vm.roomData.branch.building" ng-model="vm.roomData.building" class="form-control">
    </select>
</div>
<div class="col-md-4">
    <label for="roomFloor">
        <strong>Room Floor</strong>
    </label>
    <select ng-options="loc.floors as loc for loc in vm.roomData.building.floors" ng-model="vm.roomData.roomFloor" class="form-control">
    </select>
</div>

vm.locations 数据

[
{
    "_id": "5a681380b7c41e7df2076819",
    "branch": "Lucena",
    "__v": 0,
    "building": [
        {
            "name": "MHQ",
            "floors": [
                "Ground Floor",
                "2nd Floor",
                "3rd Floor"
            ]
        }
    ],
    "dateCreated": "2018-01-24T05:02:56.465Z"
},
{
    "_id": "5a681aecb7c41e7df207681d",
    "branch": "Lucban",
    "__v": 0,
    "building": [
        {
            "name": "MHQ1",
            "floors": [
                "ground floor",
                "2nd floor"
            ]
        }
    ],
    "dateCreated": "2018-01-24T05:34:36.775Z"
}]

最佳答案

尝试像这样初始化默认值,

   $scope.roomData.branch = $scope.locations.find((loc) => loc.branch === 'Lucena'); 
   $scope.roomData.building = $scope.roomData.branch.building.find((br) => br.name.toLowerCase() == 'mhq');
   $scope.roomData.roomFloor = '3rd Floor' ;

喜欢

var app = angular.module('testApp', []);
app.controller('testCtrl', function($scope) {
  var vm = this;
  vm.roomData = {};
  vm.locations = [{
      "_id": "5a681380b7c41e7df2076819",
      "branch": "Lucena",
      "__v": 0,
      "building": [{
        "name": "MHQ",
        "floors": [
          "Ground Floor",
          "2nd Floor",
          "3rd Floor"
        ]
      }],
      "dateCreated": "2018-01-24T05:02:56.465Z"
    },
    {
      "_id": "5a681aecb7c41e7df207681d",
      "branch": "Lucban",
      "__v": 0,
      "building": [{
        "name": "MHQ1",
        "floors": [
          "ground floor",
          "2nd floor"
        ]
      }],
      "dateCreated": "2018-01-24T05:34:36.775Z"
    }
  ];

  vm.roomData.branch = vm.locations.find((loc) => loc.branch === 'Lucena'); debugger
  vm.roomData.building = vm.roomData.branch.building.find((br) => br.name.toLowerCase() == 'mhq');
  vm.roomData.roomFloor = '3rd Floor' ;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app="testApp" ng-controller="testCtrl as vm">
  <div class="col-md-4">
    <label for="branch">
        <strong>Branch</strong>
    </label>
    <select ng-options="loc as loc.branch for loc in vm.locations" class="form-control" ng-model="vm.roomData.branch">
    </select>
    <small id="emailHelp" class="form-text text-muted">Select branch.</small>
</div>
<div class="col-md-4">
    <label for="building">
        <strong>Building</strong>
    </label>
    <select ng-options="loc as loc.name for loc in vm.roomData.branch.building" ng-model="vm.roomData.building" class="form-control">
    </select>
</div>
<div class="col-md-4">
    <label for="roomFloor">
        <strong>Room Floor</strong>
    </label>
    <select ng-options="o as o for o in vm.roomData.building.floors" ng-model="vm.roomData.roomFloor" class="form-control">
    </select>
</div>
</body>

关于javascript - ng-option 在 Angularjs 中设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48415767/

相关文章:

javascript - 在 div 上阻止选择允许在 div 周围选择

javascript - 告诉 Protractor 的 waitForAngular 卡在什么地方?

angularjs - 如何在 URL 中排序过滤器而不将它们放在键值中

angularjs - ng-model 不适用于 Angular 单选按钮

javascript - 在 Jquery 中自动完成时获取所选值

javascript - Three.js 将map分配给object.children[0]会改变整个对象的map

javascript - 拦截父页面关闭弹窗

javascript - 试图了解 jquery on events 之间的区别

javascript - Angularjs UI 多选和初始选择

javascript - XSRF 与 AngularJS : DocuSign API Embedded View Client-Side implementation