Выбранные параметры не отображаются в поле, но отправляются правильно в бэкэнд - PullRequest
0 голосов
/ 03 октября 2018

Итак, у меня есть проект, в котором я должен отобразить некоторые данные из таблицы.Теперь я хочу изменить размер данных на основе поля над таблицей, которое на самом деле является полем ввода выбора и отправляет значение в угловой контроллер.Теперь это работает отлично, за исключением того факта, что поле не показывает выбранное количество данных, отображаемых на поле. Это пустое поле .но данные вставлены правильно.Также при отладке я нашел другую опцию здесь для поля, которого нет в HTML-коде.Вот мой код для HTML и контроллера.

Просмотр:

<li class="manual-dropdown pull-right">
    <select id="ddPageSize" ng-model="PaginationInfo.pageSizeSelected" ng-change="ChangePageSize()"  aria-controls="DepartmentTable" class="form-control pull-right">
      <option value="5">5</option>
      <option value="10">10</option>
      <option value="25">25</option>
      <option value="50">50</option>
      <option value="-1">All</option>
    </select>
  </li>

Контроллер:

$scope.PaginationInfo = {
    maxSize: 5,     // Limit number for pagination display number.  
    totalCount: 0,  // Total number of items in all pages. initialize as a zero  
    pageIndex: 1,   // Current page number. First page is 1.  
    pageSizeSelected: 5, // Maximum number of items per page.
}

GetData(searched);

function GetData(searched) {
    //debugger
    //var noOfPages = 1;
    var SearchData = $scope.StatusSearch.Search;
    if (SearchData == "") {
        searched = false;
    }
    var Displaysize = $scope.PaginationInfo.pageSizeSelected;
    var index = $scope.PaginationInfo.pageIndex;
    if (searched == false) {
        Get("/User/GetData?Size=" + Displaysize + "&index=" + index, false).then(function (d) {
            //$("#").val()
            //$scope.userAccount.CountryID = $("#ddCountryOptions").val();
            // $scope.PaginationInfo.maxSize = d.info.maxSize;
            $scope.PaginationInfo.totalCount = d.totalSize;
            $scope.PaginationInfo.pageIndex = d.index;
            $scope.PaginationInfo.pageSizeSelected = d.size;
            //$scope.noOfPages = $scope.PaginationInfo.totalCount / $scope.PaginationInfo.pageSizeSelected;
            $scope.accountlist = d.GetList;
            $scope.$apply();
        })
    }
    else {
        // alert($scope.SearchData.Search);
        Get("/User/SearchData?inputstring="+ SearchData, false).then(function (d) {
            $scope.accountlist = d.GetList;
            $scope.PaginationInfo.pageIndex = index;
            $scope.PaginationInfo.pageSizeSelected = Displaysize;
            $scope.PaginationInfo.totalCount = d.totalSize;
            $scope.$apply();
        });
    }
}

объяснение для контроллера : данные загружаются при загрузке страницы, поэтому функция GetData () вызывается немедленно.размер страницы по умолчанию установлен на 5, как показано, и когда я изменяю поле, я вспоминаю функцию GetData () с размером страницы в качестве аргумента, а серверная часть делает все остальное и возвращает количество данных, которое я запросил.Кроме того, причина того, что в этой функции есть 2 вызова ajax, заключается в реализации функции поиска.который проверяет, является ли поле ввода пустым или имеет значение и на основе этого выводит данные.

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

Редактировать: После нескольких дополнительных исследований я обнаружил, что ng-Model создает пустую опцию со значением выбранной опции.Теперь проблема все еще остается, я не знаю, как отобразить значение в пустом объекте.если я выберу другую опцию в качестве выбранной, моё значение ng-модели не изменится.Так что я все еще застрял с этим.Кроме того, я уже дал ng-модели значение по умолчанию 5, такое же, как в первом раскрывающемся списке.поэтому, если я отмечу любую другую опцию как выбранную, опция ng-model останется 5 независимо от того, сколько раз я изменю значение раскрывающегося списка.

1 Ответ

0 голосов
/ 03 октября 2018

Хорошо, я вроде решил мою проблему, хотя я не уверен, что это хороший способ сделать это.

Так что я просто привязал значение pageSizeSelected к элементу html select по id.

     $("#ddPageSize").val(d.size)
     $scope.pageSizeSelected = $("#ddPageSize").val();

до применения $ scope. $, И это сработало.Теперь, когда я выбираю значение из поля, оно меняется и отображает значение, которое я выбрал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...