VijayRana Ответов: 0

Сортировка не работает в угловой


Я новичок в Angular. Я пытаюсь создать таблицу и попытаться применить сортировку, как показано ниже

Мой Код Модуля :

app.js :

(function () {
    myModule = angular.module('myAngularApplication', []);
}());


LeadService.js :

angular.module('myAngularApplication').service("LeadService", function ($http) {
    this.getAllLeads = function () { return $http.get("/Student/GetLeads"); };
});


StudentController.js :

angular.module('myAngularApplication').controller('StudentController', function ($scope, LeadService) {

    $scope.leads = [];
    $scope.sortType = 'StudentName'; // set the default sort type
    $scope.sortReverse = false;  // set the default sort order
    $scope.searchFish = '';
    GetAllLeads();

    function GetAllLeads() {
          $scope.leads = LeadService.getAllLeads();
                $scope.leads = [
                        { ID: 0, StudentName: "Test Books 1", Source: "Test Author 1", Course: "TEST1" },
                        { ID: 1, StudentName: "Test Books 2", Source: "Test Author 2", Course: "TEST2" },
                        { ID: 2, StudentName: "Test Books 332", Source: "Test Author 3", Course: "TEST3" },
                        { ID: 4, StudentName: "Test Books 4", Source: "Test Author 4", Course: "TEST4" },
                        { ID: 5, StudentName: "Test Books 5", Source: "Test Author 5", Course: "TEST5" }
                    ];<small><small></small></small>

    }

});

Мой взгляд : (это страница .cshtml, так как я использую MVC)

@*<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootswatch/3.2.0/sandstone/bootstrap.min.css">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>*@

<script src="../../libs/angular.min.js" type="text/javascript"></script>
<script src="../../app/app.js" type="text/javascript"></script>
<script src="../../app/Student/LeadService.js" type="text/javascript"></script>
<script src="../../app/Student/StudentController.js" type="text/javascript"></script>
<link rel="stylesheet" href="../../plugins/datatables/dataTables.bootstrap.css">
<div ng-app="myAngularApplication" ng-controller="StudentController">

<section class="content">
      
          <div class="box"><pre lang="text"><pre lang="text">
                <div class="box-body">
                  <table id="example1" class="table table-bordered table-striped" ng-init="GetAllLeads()">
                    <thead>
                      <tr>
                        <th>ID</th>
                        <th>Student Name</th>
                        <th>Source</th>
                        <th>Course</th>
                      </tr>
                    </thead>
                    <tbody>
                      <tr  ng-repeat="lead in leads">
                        <td>{{lead.ID}}</td>
                        <td>{{lead.StudentName}}</td>
                        <td>{{lead.Source}}</td>
                        <td>{{lead.Course}}</td>
                      </tr>
                    </tbody>
                  </table>
                </div>
              </div>
</div></section>

 <script type="text/javascript">
     $(function () {
         $("#example1").DataTable();
         $('#example2').DataTable({
             "paging": true,
             "lengthChange": false,
             "searching": false,
             "ordering": true,
             "info": true,
             "autoWidth": false
         });
     });
    </script>


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

Мои действия в контроллер

public JsonResult GetLeads()
        {
            List<lead> leadList = new List<lead>();

            for (int i = 0; i < 3; i++)
            {
                Lead obj1 = new Lead();
                obj1.ID = i;
                obj1.StudentName = "Vijay";
                obj1.Source = "Source" + i;
                obj1.Course = "cource" + i;
                leadList.Add(obj1);
            }
          

            return Json(leadList.ToArray(), JsonRequestBehavior.AllowGet);
        }


и я изменил свой контроллер, как показано ниже

angular.module('myAngularApplication').controller('StudentController', function ($scope, LeadService) {

    $scope.leads = [];
    $scope.sortType = 'StudentName'; // set the default sort type
    $scope.sortReverse = false;  // set the default sort order
    $scope.searchFish = '';
    GetAllLeads();

    function GetAllLeads() {
        var getData = LeadService.getAllLeads();
        getData.then(function (l) {
           // $scope.leads = l.data; // I tried this also
            for (i = 0; i < l.data.length; i++) {
                $scope.leads[i] = { ID: l.data[i].ID, StudentName: l.data[i].StudentName, Source: l.data[i].Source, Course: l.data[i].Course }
            }
        }, function () {
            alert('Error in getting records');
        });

    }

});


Изначально он загружает данные как и ожидалось

Для сортировки и фильтрации я использую
<script src="../../plugins/datatables/jquery.dataTables.min.js"></script>
<script src="../../plugins/datatables/dataTables.bootstrap.min.js"></script>


Мой вопрос таков. Почему это работает с фиктивными данными и почему это не работает с фактическими данными (возвращающимися из контроллера). Что мне нужно изменить, чтобы это сработало. Это может быть глупый вопрос, но любая помощь будет оценена по достоинству.

Что я уже пробовал:

Я попытался изменить угловую версию Js.

David_Wimbley

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

Anurag Sharma

@виджей

Не могли бы вы поделиться JSON, возвращаемый AJAX-вызов?

Я хотел бы сравнить его со статическим значением.

Спасибо.

0 Ответов