Как изменить значение в select с помощью ng-options по коду? - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю над проектом с angularjs, в котором у меня есть три DDL на странице (HTML), созданные с помощью «select» с помощью «ng-options», как только я выбрал три DDL, когда я выбрал первыйDDL, я помещаю в исходное состояние два других (выберите опцию), но это не происходит, поскольку они остаются с выбранным значением или пустым.

На стороне контроллеров в .js, вВ переменной, связанной с каждой из ng-моделей ddl, они устанавливают объект по умолчанию ($ scope.selectedActive = $ scope.default_option;), но это не работает

При изменении каждого изddls, я вижу, что класс ng-dirty и ng-valid (class = "молекул_лист ng-valid ng-dirty") Я думаю, что проблема в этом.

Это код в HTML

 <select id="ddl_actives" name="ddl_actives" ng-model="selectedActive" class="molecule_list" style="width:180px;" ng-options="active.text for active in Actives_list | orderBy: 'text'" ng-change="Select_molecule(selectedActive)"></select>
 <select id="ddl_submission" name="ddl_submission" class="molecule_list" ng-model="selectedsubmission" ng-options="event.text for event in submissionEvent_list track by event.value" ng-change="Select_submission(selectedsubmission)"></select>
 <select id="ddl_authority" name="ddl_authority" class="molecule_list" ng-model="selectedauthority" ng-options="authority.text for authority in authority_list | orderBy: 'text'" ng-change="OpenMenu_Authority(selectedauthority)"></select>

это код в .js Как идентификатор загружает каждый DDL

$scope.loadActives = function () {
var dow_user_id = Cookies.get('username');
EndpointsService.GetList_Actives.query({ dow_user_id: dow_user_id }, {}).$promise.then(function (data) {
    $scope.Actives_list = data;
    //SCP-513
    $scope.Actives_list.unshift($scope.default_option);
    $scope.selectedActive = $scope.default_option;
}, function (error) {
    if (error.data.Message != undefined)
        alert(error.data.Message + '\n' + 'Detail: ' + error.data.ExceptionMessage);
    else
        alert('An error has occurred while loading the Actives list\nDetail: at service "GetList_Actives"');
});

};

Это пример кода, который я использую для сброса значения вng-модель ddl.

$scope.Select_molecule = function (selectedActives) {
    $scope.selectedActive = $scope.default_option;
    $scope.selectedauthority = $scope.default_option;
};

Я ожидаю, что при выборепервый ddl, остальные два показывают опцию (выберите опцию)

1 Ответ

0 голосов
/ 06 апреля 2019

Опция по умолчанию не может быть выбрана в других выпадающих меню, если она не существует, как опция, которую нужно выбрать, я взял ваш код и внес в него некоторые изменения.

Вот оно:

HTML:

<select id="ddl_actives" name="ddl_actives" ng-model="selectedActive" class="molecule_list" style="width:180px;" ng-options="active.text for active in Actives_list | orderBy: 'text'" ng-change="Select_molecule(selectedActive)"></select>        

<select id="ddl_submission" name="ddl_submission" class="molecule_list" ng-model="selectedsubmission" ng-options="event.text for event in submissionEvent_list" ng-change="Select_submission(selectedsubmission)"></select>

<select id="ddl_authority" name="ddl_authority" class="molecule_list" ng-model="selectedauthority" ng-options="authority.text for authority in authority_list | orderBy: 'text'" ng-change="OpenMenu_Authority(selectedauthority)"></select>

Контроллер:

$scope.submissionEvent_list = [];
   $scope.authority_list = [];
   $scope.loadActives = function () {
      $scope.default_option = {
       text: 'default'
      };

     $scope.Actives_list = [
      {
        text: 'test',
        value: 'a value'
      },
      {
        text: 'test2',
        value: 'another value'
      }
     ];
     $scope.submissionEvent_list.unshift($scope.default_option);
     $scope.authority_list.unshift($scope.default_option);
     $scope.Actives_list.unshift($scope.default_option);

     $scope.selectedActive = $scope.default_option;

   };

   $scope.loadActives();

   $scope.Select_molecule = function (selectedActives) {
      $scope.selectedsubmission = $scope.default_option;
      $scope.selectedauthority = $scope.default_option;
   };

Обратите внимание, что другие раскрывающиеся списки заполнены параметром по умолчанию, но он не будет выбран, пока в первом раскрывающемся списке не будет внесено изменение.

Надеюсь, это поможет.

...