【问题标题】:ng-repeat not populating values at md-optionng-repeat 不在 md-option 填充值
【发布时间】:2016-09-08 23:20:06
【问题描述】:

我正在使用 angular-material 并且我想在 <md-option> 组件中放置一些年份作为值,但是当我将 ng-repeat 指令放在 <md-option> 时没有任何反应。这是我的代码:

<div>
    <md-card>

        <md-card-content>
            <div layout="row" layout-align="space-between start">
                <md-select ng-model="history.userYear" placeholder="Selecione o ano" class="">
                  <md-option ng-value="year" ng-repeat="year in history.historyYears">
                    {{year}}
                  </md-option>
                </md-select>
            </div>
        </md-card-content>

    </md-card>
</div>

controller.js:

(function () {
    'use strict';

    angular
        .module('myapp')
        .controller('BulletinController', BulletinController);

    function BulletinController() {

        var vm = this;

        vm.historyYears = historyYears;

        function historyYears() {
            var startYear = 2013,
                currentYear = new Date().getFullYear(),
                years = [];

            while (startYear <= currentYear) {
                years.push(startYear++);
            }

            return years;
        }
    }

}());

我需要在我的&lt;md-select&gt; 中放置一个年份范围,但它没有被填充,我也尝试在我的 ng-repeat 中放置“track by $index”,如下所示:ng-repeat="year in history.historyYears track by $index",但这不起作用。

【问题讨论】:

    标签: javascript angularjs angular-material


    【解决方案1】:

    给你 - CodePen

    标记

    <div ng-controller="AppCtrl as vm" ng-cloak="" ng-app="MyApp">
      <div>
          <md-card>
              <md-card-content>
                  <div layout="row" layout-align="space-between start">
                      <md-select ng-model="history.userYear" placeholder="Selecione o ano" class="">
                        <md-option ng-value="year" ng-repeat="year in vm.history.historyYears">
                          {{year}}
                        </md-option>
                      </md-select>
                  </div>
              </md-card-content>
    
          </md-card>
      </div>
    </div>
    

    JS

    angular.module('MyApp',['ngMaterial', 'ngMessages'])
    
    .controller('AppCtrl', function() {
      var vm = this;
      vm.history = {
        historyYears: historyYears()
      }
    
      function historyYears() {
        var startYear = 2013,
            currentYear = new Date().getFullYear(),
            years = [];
    
        while (startYear <= currentYear) {
          years.push(startYear++);
        }
    
        return years;
      }
    });
    

    【讨论】:

    • history 是我的控制器,在我的路由器中定义
    • @Leandro 我想我想说明的是ng-repeat="year in history.historyYears" 不适用于vm.historyYears = historyYears; 声明您要么必须像我的答案一样更改它,要么使用ng-repeat="year in vm.historyYears"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2017-01-11
    相关资源
    最近更新 更多