У меня есть решение, где я могу создать узел в списке узлов. Эти узлы затем сохраняются в моей базе данных. Если я создам три узла в одном сеансе, а затем обновляю сайт, он случайным образом сортирует узлы. Можно ли сортировать его по последнему созданному узлу, поэтому, когда я обновляю страницу, первый созданный узел находится в верхней части, а последний создан в 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);
}]);
})();
Спасибо, я буду смотреть на него. –
Итак, я прочитал это. Если я правильно ее понимаю, мне нужна переменная dateTime в моей базе данных, прежде чем я смогу сортировать узлы по дате? Не существует способа использовать orderBy без добавления dateTime? –
Я понял это - я добавил int в базу данных, где вы можете добавить заказ и использованный orderBy. Спасибо. –