【问题标题】:How to get label=value using ng-options with simple array如何使用带有简单数组的 ng-options 获取 label=value
【发布时间】:2016-10-20 19:02:14
【问题描述】:

我有一个像$scope.years = ['1900', '1901', '1902']; 这样的数组

如果我使用<select ng-model="chosenYear" ng-options="choice for choice in years"></select> 我明白了

<option value="0">1900</option>
<option value="1">1901</option>
<option value="2">1902</option>

数组的索引成为选项的“value”。我怎样才能让valuelabel 相等(都是 1900、1902、1902 等)?

similar 问题有一个可接受的答案,但它根本不做这件事。

角度版本:1.2.16

【问题讨论】:

  • this,和你的情况差不多
  • 只是一个简单的问题,鉴于您有一个模型 (chosenYear) 是选定的项目,并且您有一个可选择项目的列表,为什么需要这样做?

标签: angularjs


【解决方案1】:

你想要的是&lt;select ng-model="chosenYear" ng-options="choice as choice for choice in years"&gt;&lt;/select&gt;

编辑: 因为上面不适用于角度1.2.16 尝试下面

<select ng-model="chosenYear" ng-options="choice for choice in years track by choice"></select>

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.years = ['1900', '1901', '1902'];
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">


<select ng-model="chosenYear" ng-options="choice for choice in years track by choice"></select>
</div>



</body>
</html>

【讨论】:

  • 是的,刚刚检查过。它不适用于您的版本,但可以与 V 1.5.8 完美配合。我不确定1.2.16 是否支持此功能。
  • @Daud 我已经编辑了我的答案并为新代码添加了一个 sn-p。你可以试试这个吗?
  • 我不确定,因为它在这个裸骨 sn-p 中工作我猜它是由于你的代码的其他部分。
  • 是的,这是我的问题。现在工作。
【解决方案2】:

查看this,与您的情况类似,或者您可以使用 ng-repeat 并动态创建价值&lt;option ng-repeat="option in selecteOptions" value="option"&gt;{{option}}&lt;/option&gt;

【讨论】:

    【解决方案3】:

    试试这个

    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
      $scope.years = [{
          label: "1900",
          value: "1900"
        }, {
          label: "1901",
          value: "1901"
        }, {
          label: "1902",
          value: "1902"
        },
    
      ];
    });
    <!DOCTYPE html>
    <html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    
    <body>
    
      <div ng-app="myApp" ng-controller="myCtrl">
    
        <p>Select a year:</p>
    
       
    
        <select  name="mySelect" id="mySelect" ng-options="option.label for option in years track by option.value" ng-model="selectedCar"></select>
    
        <h1>You selected: {{selectedCar.label}}</h1>
    
      </div>
    
    
    
    </body>
    
    </html>

    【讨论】:

    • 由于原始问题要求提供“ng-options”解决方案,因此也请添加该替代方案。
    • $digest 不是这个 sn-p 的一部分,因为我没有收到任何错误,它非常有效。
    • 最欢迎你 :)
    【解决方案4】:

    如果您不介意使用 ng-repeat,请改用它:

    <select ng-model="selectedItem"> <option ng-repeat="year in years" value="{{year}}">{{year}}</option> </select>

    【讨论】:

      猜你喜欢
      • 2014-09-11
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      相关资源
      最近更新 更多