Я создал модель в Appcelerator, которая имеет методы сортировки. Одним из свойств (date
) является строка, содержащая только числа. Мне нужно отсортировать это по возрастанию или по порядку смерти, как если бы это было целое число. Однако, поскольку поле является отметкой времени даты в формате UTC, иногда более старые даты имеют меньше цифр и начинаются с большего числа, поэтому они должны быть наверху при сортировке по последнему слову или внизу при сортировке по самому старому.Модели аппликации титана/сплава: как мне изменить этот метод сортировки для сортировки строки, содержащей цифры
Вот моя модель файл:
exports.definition = {
config: {
columns: {
"name": "text",
"rating": "integer",
"location": "text",
"notes": "text",
"date": "text",
"latitude": "integer",
"longitude": "integer",
"api_id": "text"
},
adapter: {
type: "sql",
collection_name: "test"
}
},
extendModel: function(Model) {
_.extend(Model.prototype, {
// extended functions and properties go here
});
return Model;
},
extendCollection: function(Collection) {
_.extend(Collection.prototype, {
// extended functions and properties go here
initialize: function() {
this.sortField = "date";
this.sortDirection = "DESC";
},
comparator: function (collection) {
var that = this;
return collection.get(that.sortField);
},
setSortField: function (field, direction) {
this.sortField = field;
this.sortDirection = direction;
},
sortBy: function (iterator, context) {
var obj = this.models;
var direction = this.sortDirection;
return _.pluck(_.map(obj, function (value, index, list) {
return {
value: value,
index: index,
criteria: iterator.call(context, value, index, list)
};
}).sort(function (left, right) {
// swap a and b for reverse sort
var a = direction === "ASC" ? left.criteria : right.criteria;
var b = direction === "ASC" ? right.criteria : left.criteria;
if (a !== b) {
if (a > b || a === void 0) return 1;
if (a < b || b === void 0) return -1;
}
return left.index < right.index ? -1 : 1;
}), 'value');
}
});
return Collection;
}
};
Вот код в моем index.js, что сортирует пиво
theBeers.setSortField("date", "ASC");
theBeers.sort();
Как я могу изменить код выше, чтобы исправить Эта проблема?
Голые в виду, что я все еще нужны другие свойства, строки должны быть отсортированы в обычном режиме, как, например, name
location
и т.д.
Я понимаю концепцию Вашего ответа, но как я могу узнать, что поле '«дата»' в 'функции sortBy' моего кода? Я не знаю, как получить эту информацию. – shrewdbeans
Я думал, что объяснил, что вот полная функция: – Larrie