【问题标题】:Intel XDK listview sort英特尔 XDK 列表视图排序
【发布时间】:2014-09-15 18:40:21
【问题描述】:

我尝试使用英特尔 XDK 和 Parse.com 作为后端服务制作一个简单的应用程序。

我制作了一个类似this tutorial 节目的列表视图。

我的应用程序中的列表视图在底部显示最新条目。而不是我想以相反的方式显示列表 - 列表顶部的最新条目。

在一个简单的 HTML5-JS 文件中,我使用 query.ascending("createdAt"); 执行此操作,如 Parse.com 中的 JavaScript 文档中所述。我如何使用 Intel XDK 做到这一点?

我会感谢每一个有用的答案。

编辑在 Chris Perkins 的第一个回答之后

根据this answer,我设法将我的 Parse.com 数据库集成到英特尔 XDK 中作为外部 Web 服务。

所以,在 -----/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 = {}; 的大括号内。我是对还是错?

【问题讨论】:

    标签: listview sorting parse-platform intel-xdk


    【解决方案1】:

    这是我们尚未提供的功能。我们非常希望用户能够过滤、转换和重新排序服务请求数据。如果您有任何建议或想法,请告诉我们。我们现在的想法是我们将举行一次会议。如果服务被命名为 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); 
        });
    

    这有意义吗?

    【讨论】:

    • 你能看到我的答案吗?这是我的解决方案。
    【解决方案2】:

    我尝试了上面的建议,但甚至没有创建列表。

    解决方案不是数据库与应用程序关联的方式。

    我意识到该列表是在模板中创建的,并且解决方案位于主干.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 数据库的最新条目。

    我不知道这是否是正确的解决方案,或者它是否适合更复杂的问题,但我希望以某种方式提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 2016-09-23
      相关资源
      最近更新 更多