2015-03-24 2 views
0

У меня есть решение, где я могу создать узел в списке узлов. Эти узлы затем сохраняются в моей базе данных. Если я создам три узла в одном сеансе, а затем обновляю сайт, он случайным образом сортирует узлы. Можно ли сортировать его по последнему созданному узлу, поэтому, когда я обновляю страницу, первый созданный узел находится в верхней части, а последний создан в buttom?MVC, AngularJS, Сортировка, сортировка по последнему созданному узлу

Я тяну каждый вызов в базу данных через угловой. Это мой JS файл:

(function() { 
var domainName = 'Match'; 

angular.module('FightCardModule').controller("FightCardController", 
    ['$scope', '$modal', '$http', '$routeParams', 'guidGenerator', 'eventBus', domainName + "Service", 'MatchModelFactory', 
    function ($scope, $modal, $http, $routeParams, guidGenerator, eventBus, domainService, modelFactory) { 

     $scope.eventId = $routeParams.eventId; 
     $scope.id = $routeParams.id; 


     $scope.refreshList = function (eventId) { 
      var serviceUrl = "/api/Match" + (eventId ? "/" + eventId : ""); 

      $http({ 
       method: 'GET', 
       url: serviceUrl 
      }).success(function (data, status, headers, config) { 
       $scope.itemsList.nodes = buildHierarchy(data); 
      }).error(function (data, status, headers, config) { 

      }); 
     } 

     $scope.itemsList = { 
      nodes: [], 
     }; 

     $scope.sortableOptions = { 
      containment: '#sortable-container', 
      accept: function (sourceItemHandleScope, destSortableScope) { 
       return sourceItemHandleScope.itemScope.sortableScope.$id === destSortableScope.$id; 
      } 
     }; 

     $scope.addNote = function (data) { 
      newNode = createNewNode(); 
      newNode.EventId = $scope.eventId; 
      $scope.itemsList.nodes.push(newNode); 

      var serviceUrl = "/api/" + "Match"; 

      var cleanModel = {}; 
      cleanModel.Id = newNode.Id; 
      cleanModel.EventId = newNode.EventId; 
      cleanModel.ParentMatchId = newNode.ParentMatchId; 
      cleanModel.Player1= newNode.Player1; 

      $http({ 
       method: 'POST', 
       url: serviceUrl, 
       data: cleanModel 
      }).success(function (data, status, headers, config) { 
      }); 
     } 

     $scope.alertDelete = function (data) { 
      $modal.open({ 
       templateUrl: 'openAlertBox.html', 
       scope: $scope, 
       controller: function ($scope) { 
        $scope.ok = function() { 

         var indexToRemove; 
         var Nodes; 

         Nodes = $scope.itemsList.nodes; 

         for (var i = 0; i < Nodes.length; i++) { 
          if (Nodes[i].Id == data.Id) { 
           indexToRemove = i; 
           break; 
          } 
         } 
         Nodes.splice(indexToRemove, 1); 
         eventBus.publish(domainName + ".delete.submit", { model: data }); 
         $scope.$dismiss(); 

        } 
        $scope.cancel = function() { 
         $scope.$dismiss() 
        } 
       } 
      }) 
     } 

     function createNewNode(parentNode) { 
      var newNodeModel = new modelFactory.DomainModelConstructor(); 
      if (parentNode) { 
       newNodeModel.ParentMatchId = parentNode.Id; 
       newNodeModel.EventId = parentNode.EventId; 
      } 

      var newNode = convertModelToViewModel(newNodeModel); 
      newNode.parent = parentNode; 
      return newNode; 
     } 

     function convertModelToViewModel(nodeModel) { 
      nodeModel.nodes = []; 
      return nodeModel; 
     } 

     function buildHierarchy(matches) { 

      var roots = [], children = {}; 
      for (var i = 0, len = matches.length; i < len; ++i) { 
       var item = convertModelToViewModel(matches[i]); 
       if (item.EventId == $scope.eventId){ 
       roots.push(item); 
      } 
      } 

      return roots; 
     } 

     $scope.editMatchUsingModal = function (data) { 
      $modal.open({ 
       templateUrl: 'openMatchBox.html', 
       scope: $scope, 
       controller: function ($scope) { 
        $scope.player1= data.Player1; 
        $scope.ok = function (player1) { 
         $scope.edit(data, player1); 

         $scope.$dismiss(); 
        } 
        $scope.cancel = function() { 
         $scope.$dismiss(); 
        } 
       } 
      }) 
     } 

     $scope.edit = function (data, player1) { 
      var newNode = {}; 
      newNode.Player1= player1; 

      data.Player1= player1; 

      eventBus.publish(domainName + ".edit.submit", { model: newNode }); 

     }; 

     $scope.refreshList($scope.eventId); 
     $scope.refreshList($scope.id); 

    }]); 

})(); 

ответ

1

Пожалуйста, обратите внимание на following link и посмотреть, как вы можете отсортировать список с OrderBy.

BTW вы не должны обновить страницу .. Попробуйте использовать $ смотреть

+0

Спасибо, я буду смотреть на него. –

+0

Итак, я прочитал это. Если я правильно ее понимаю, мне нужна переменная dateTime в моей базе данных, прежде чем я смогу сортировать узлы по дате? Не существует способа использовать orderBy без добавления dateTime? –

+0

Я понял это - я добавил int в базу данных, где вы можете добавить заказ и использованный orderBy. Спасибо. –

Смежные вопросы