Сортировка списка Intel XDK

Я пытаюсь сделать простое приложение с Intel XDK и Parse.com в качестве серверной службы.

Я создал список, подобный этому руководству показывает.

Список в моем приложении отображает самые новые записи внизу. Вместо этого я хочу показать список противоположным образом - самые последние записи вверху списка.

В простом файле HTML5-JS я делаю это с помощью query.ascending("createdAt");, как описано в документации по JavaScript на Parse.com. Как я могу сделать это с помощью Intel XDK?

Я буду признателен за каждый полезный ответ.

ИЗМЕНИТЬ после первого ответа Криса Перкинса

Мне удалось интегрировать мою базу данных Parse.com в Intel XDK в качестве внешней веб-службы в соответствии с этот ответ.

Итак, в -----/www/xdk/services/service-methods.js часть метода, вызываемая моей службой, выглядит так:

intel.xdk.services.iodocs_.New_Service = ((function (credentials) {
  var exports = {};

    exports.ServiceObject = function(params) {
    var url = 'https://api.parse.com/1/classes/ServiceObject';
    return $.ajax({
            url : url,
            headers : {
            'X-Parse-Application-Id' : credentials.apiKey,
            'X-Parse-REST-API-Key' : credentials.apiSecret
            }
        });
    };

  return exports;
}))(intel.xdk.services.credentials.New_Service,intel.xdk.services.iodocs_.helpers);

Если я правильно понял, массив, который я хочу отобразить в обратном порядке, представляет собой значение «результатов» в теле ответа моей службы, и все это находится в фигурных скобках var exports = {};. прав я или нет?


person GSav    schedule 15.09.2014    source источник


Ответы (2)


это функция, которую мы еще не предоставили. Мы очень хотим, чтобы пользователи могли фильтровать, преобразовывать и переупорядочивать данные запросов на обслуживание. Если у вас есть какие-либо предложения или идеи, дайте нам знать. Наша идея прямо сейчас состоит в том, что у нас будет конвенция. Если служба называется intel.xdk.foo, то все, что называется intel.xdk.foo.filter, будет вызываться автоматически, так что она получает результирующие данные в качестве аргумента и может возвращать измененные данные.

Но это еще не все. А пока сделайте так:

1. В XDK щелкните значок шестеренки «Настройки» в крайнем правом углу панели инструментов. Перейдите на вкладку "Службы" и отключите минимизацию ВЫКЛ.

2 - Откройте yourproject/www/xdk/services/service-methods.js Найдите там метод, вызываемый вашим сервисным методом. Вероятно, это выглядит примерно так:

return $.ajax({
      url: url,
      type: 'GET'
    });

3 - Используйте цепочку обещаний, чтобы изменить этот результат. В вашем случае допустим, что данные представляют собой массив, и мы хотим его изменить (вероятно, оба неверных предположения):

return $.ajax({
      url: url,
      type: 'GET'
    }).then(function(data){
      return Array.prototype.reverse(data); 
    });

Имеет ли это смысл?

person Chris Perkins    schedule 15.09.2014
comment
Ты видишь мой ответ? Это было моим решением. - person GSav; 23.09.2014

Я попробовал то, что было предложено выше, но список даже не был создан.

Решение заключалось не в том, как база данных ассоциировалась с приложением.

Я понял, что список создается в шаблоне, а решение лежит в файле backbone.js. Итак, я открыл -----/www/js/backbone_support.js и попытался вмешаться, сделав что-то похожее на это

var myCollection = Backbone.Collection.extend({
        model: myModel,
        comparator: function(item) {
            return -item.get('');
        }
    });

или найти где-то строку с чем-то вроде этого

$('#list').append(listItem.render().el); и измените .append() на .prepend().

Мне ничего не помогло. Но в конце концов я заметил эти строки в коде

//non-destructive reverse
var nd_reverse = function(arr){ return _.initial(arr, 0).reverse(); };

Я удалил .reverse() и это произошло. Теперь список отображает самые новые записи моей базы данных Parse.com вверху.

Я не знаю, является ли это правильным решением или подходит для более сложных проблем, но я надеюсь как-то помочь.

person GSav    schedule 22.09.2014