【问题标题】:How do I set default value of select box in angularjs如何在angularjs中设置选择框的默认值
【发布时间】:2013-08-25 05:07:38
【问题描述】:

我有一个用于编辑对象的表单,但我无法在选择框中选择值。

我有一个代表要编辑的 json 数组,如下所示:

$scope.item = [{
    "objectID": "76",
    "versionID": "0",
    "versionName": "CURRENT",
    "objectName": "xyz",
}]

现在我同时从另一个 json 数组中填充一个选择框,如下所示:

$scope.versions = [
{
    "id": "0",
    "description": "CURRENT",
    "name": "CURRENT"
},
{
    "id": "114",
    "description": "description of Version 2",
    "name": "version2"
},
{
    "id": "126",
    "description": "description of Version 3",
    "name": "version3"
},
{
    "id": "149",
    "description": "description of Version 4",
    "name": "version4"
}] 

在我的网页中,我正在创建选择框,如下所示:

Version: <select ng-model="item.versionID"
                 ng-selected="item.versionID"
                 ng-options="version.name for version in versions"
                 required>

选择框正在为我填充,但它应该选择与item 中的版本匹配的值。 versionIDversionName 我都试过了,我什至尝试过设置 ng-selected="0" ,但还是不行。

我在 SO、Angularjs 网站上查看了此处,并在 Google 上搜索并浏览了无数教程,但仍然存在问题。我似乎看不出问题出在哪里,因此非常感谢任何帮助

已添加 JSFiddle

添加了一个 JsFiddle here

【问题讨论】:

  • 你能用它做一个小提琴或jsbin吗?在那应用硬编码的json。会比找出问题更容易。
  • @TheDarkKnight 添加了 JsFiddle here

标签: javascript angularjs


【解决方案1】:

你可以像这样简单地使用ng-init

<select ng-init="somethingHere = options[0]" ng-model="somethingHere" ng-options="option.name for option in options"></select>

【讨论】:

  • @Robbo_UK 你能解释一下你的意思吗? ty
  • 包含多个可选项目的下拉菜单。弄清楚了。您添加了多个单词。
  • 此外,如果您正在构建一个编辑表单,其中模型可能已经或可能没有值,这很好用:ng-init="somethingHere = somethingHere || options[0]"
  • 万一发生在其他人身上,这只有在我在ng-options 中添加tracky by 时才对我有用。我的选项是具有_id 的资源集合,所以我的 select 看起来像:&lt;select ng-init="somethingHere = options[0]" ng-model="somethingHere" ng-options="option.name for option in options track by option._id"&gt;&lt;/select&gt;
  • 如果我想在不知道 ID 的情况下选择 version2 作为默认值怎么办
【解决方案2】:

你可以追加

track by version.id

到您的 ng 选项。

【讨论】:

【解决方案3】:

它没有设置默认值,因为您的模型没有绑定到 id 或 name 属性,它绑定到每个 version 对象。尝试将versionID 设置为其中一个对象,它应该可以工作,即$scope.item.versionID = $scope.versions[2];

如果你想通过 id 属性设置那么你需要添加select as 语法:

ng-options="version.id as version.name for version in versions"

http://jsfiddle.net/LrhAQ/1/

【讨论】:

  • $scope.item.versionID = $scope.versions[2]; 没有覆盖我项目中的值吗?我希望能够根据item.versionIDversions 中选择版本
【解决方案4】:

在搜索并尝试多个非工作选项以使我选择的默认选项工作后。我在以下位置找到了一个干净的解决方案: http://www.undefinednull.com/2014/08/11/a-brief-walk-through-of-the-ng-options-in-angularjs/

<select class="ajg-stereo-fader-input-name ajg-select-left"  ng-options="option.name for option in selectOptions" ng-model="inputLeft"></select>
<select class="ajg-stereo-fader-input-name ajg-select-right" ng-options="option.name for option in selectOptions" ng-model="inputRight"></select>

 scope.inputLeft =  scope.selectOptions[0];
 scope.inputRight = scope.selectOptions[1];

【讨论】:

    【解决方案5】:

    根据文档select,以下代码对我有用。

    <div ng-controller="ExampleController">
    <form name="myForm">
    <label for="mySelect">Make a choice:</label>
    <select name="mySelect" id="mySelect"
      ng-options="option.name for option in data.availableOptions track by     option.id"
      ng-model="data.selectedOption"></select>
    </form>
    <hr>
    <tt>option = {{data.selectedOption}}</tt><br/>
    </div>
    

    【讨论】:

      【解决方案6】:
        <select ng-model="selectedCar" ><option ng-repeat="car in cars "  value="{{car.model}}">{{car.model}}</option></select>
      <script>var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) { $scope.cars = [{model : "Ford Mustang", color : "red"}, {model : "Fiat 500", color : "white"},{model : "Volvo XC90", color : "black"}];
      $scope.selectedCar=$scope.cars[0].model ;});
      

      【讨论】:

      • $scope.selectedCar=$scope.cars[0].model ;" 将模型保存在控制器部分
      【解决方案7】:

      如果您甚至不想将 ng-model 初始化为静态值并且每个值都是 DB 驱动的,则可以通过以下方式完成。 Angular 比较评估值并填充下拉列表。

      下面的 modelData.unitId 是从 DB 中检索的,并与单元 id 列表进行比较,该列表是与 db 不同的列表-

       <select id="uomList" ng-init="modelData.unitId"
                               ng-model="modelData.unitId" ng-options="unitOfMeasurement.id as unitOfMeasurement.unitName for unitOfMeasurement in unitOfMeasurements">

      【讨论】:

        猜你喜欢
        • 2020-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-09
        • 2014-02-16
        • 1970-01-01
        • 2020-01-21
        相关资源
        最近更新 更多