Вызовите функцию в элементе выбора для заполнения источника ngOptions?

У меня есть <select> как показано ниже:

<div ng-show="myCtrl.name == 'Jack'">
        <select ng-model="myCtrl.selectedValue" ng-options="value.id as value.title for value in myCtrl.valueDrpValues">
            <option value=""> Select One ...</option>
        </select>
</div>

И в myController.jsУ меня есть функция, которая должна заполнить myCtrl.valueDrpValues, как я могу вызвать эту функцию из тега выбора? Я протестировал ng-init, но он не работал. Кроме того, я вызвал функцию именно из ng-option и это тоже не сработало. (как показано ниже:)

ng-options="value.id as value.title for value in definitionCtrl.fillValueDrp()"

2 ответа

Вы можете использовать ng-init

Вызовите там свою функцию, и ваш массив будет заполнен, например, так:

<div ng-init="fillValueDrp()">
    <div ng-show="myCtrl.name == 'Jack'">
        <select ng-model="myCtrl.selectedValue" ng-options="value.id as value.title for value in myCtrl.valueDrpValues">
            <option value=""> Select One ...</option>
        </select>
    </div>
</div>

Попробуй это.

var app = angular
  .module('MyApp', [
  ])
.controller('Main', ['$scope', function ($scope) { 
  var self = this;
  self.items = [];
  self.name = "Jack";
   
  self.fillValueDrp = function(){
     for(var i=0 ;i < 5; i++){
         self.items.push({"id":i,"title":i});
        }
    }

}])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
 <div class="main-content" ng-app="MyApp" ng-controller="Main as myCtrl">
      <div ng-show="myCtrl.name == 'Jack'" ng-init= "myCtrl.fillValueDrp()">
        <select ng-model="myCtrl.selectedValue "ng-options="value.id as value.title for value in myCtrl.items">
            <option value=""> Select One ...</option>
        </select>
</div>
    </div>

Другие вопросы по тегам