聚合物1.0:排序dom-repeat

让我思考一下

如何按排序此jsBin中的数据item.order文件

http://jsbin.com/zoqaqivaba/edit?html,输出
<html>

<head>
  <title>My Element</title>

  <script data-require="polymer@*" data-semver="1.0.0" src="http://www.polymer-project.org/1.0/samples/components/webcomponentsjs/webcomponents-lite.js"></script>
  <script data-require="polymer@*" data-semver="1.0.0" src="http://www.polymer-project.org/1.0/samples/components/polymer/polymer.html"></script>
  <base href="http://element-party.xyz/" />
  <link rel="import" href="all-elements.html" />
</head>

<body>
<dom-module id="my-element">

  <template>

  <firebase-collection location="https://dinosaur-facts.firebaseio.com/dinosaurs"
                       data="{{items}}"></firebase-collection>
    <paper-input label="Search"
                 value="{{searchString::input}}"></paper-input>
    <div>[[searchString]]</div>
    <div>[[sortby]]</div>
        <paper-dropdown-menu label="Sort by">
            <paper-menu class="dropdown-content"
                        selected="{{sortby}}"
                        attr-for-selected="data-sortby">
                <paper-item data-sortby="none" >None </paper-item>
                <paper-item data-sortby="order">Order</paper-item>
            </paper-menu>
        </paper-dropdown-menu>
    <template is="dom-repeat" items="{{items}}" as="item"
        filter="{{computeFilter(searchString)}}"
        sort="{{computeSort(sortby)}}">
        <div>[[item.__firebaseKey__]], [[item.order]]</div>
    </template>
  </template>

  <script>
    Polymer({
      is: "my-element",
      computeFilter: function(string) {
        if (!string) {
          // set filter to null to disable filtering
          return null;
        } else {
          // return a filter function for the current search string
          string = string.toLowerCase();
          return function(item) {
            var name = item.__firebaseKey__.toLowerCase();
            var order = item.order.toLowerCase();
            return (name.indexOf(string) != -1 ||
                   order.indexOf(string) != -1);
          };
        }
      },
      computeSort: function(string) {
/*      What function goes here? To sort by 'item.order' in reverse.
          function(a, b) {
            return b[string] - a[string];
          }
*/        
      },
      properties: {
        items: {
          type: Array
        }
      }
    });
  </script> 
</dom-module>

  <my-element></my-element>
</body>

</html>
先生

您的排序没有绑定到属性,因此不需要花括号{}

您需要以以下形式格式化排序函数:该函数采用两个参数(每个要排序的值使用一个参数),并根据以下规则返回-1、1或0:

  • 如果compareFunction(a,b)小于0,则将a排序到比b低的索引,即a在前。
  • 如果compareFunction(a,b)返回0,则a和b彼此相对不变,但对所有不同元素进行排序。注意:ECMAscript标准不保证此行为,因此并非所有浏览器(例如,至少可追溯到2003年的Mozilla版本)都遵守此行为。
  • 如果compareFunction(a,b)大于0,则将b排序为比a更低的索引。

有关更多信息,请参见Array.prototype.sort()

http://jsbin.com/zaxogonuxa/edit?html,输出

<template>

  <firebase-collection location="https://dinosaur-facts.firebaseio.com/dinosaurs" data="{{items}}"></firebase-collection>
  <paper-input label="Search" value="{{searchString::input}}"></paper-input>
  <div>[[searchString]]</div>
  <div>[[sortby]]</div>
  <paper-dropdown-menu label="Sort by">
    <paper-menu class="dropdown-content" selected="{{sortby}}" attr-for-selected="data-sortby">
      <paper-item data-sortby="none">None </paper-item>
      <paper-item data-sortby="order">Order</paper-item>
    </paper-menu>
  </paper-dropdown-menu>
  <template is="dom-repeat" items="{{items}}" as="item" filter="{{computeFilter(searchString)}}" sort="_computeSort">
    <div>[[item.__firebaseKey__]], [[item.order]]</div>
  </template>
</template>

<script>
  Polymer({
    is: "my-element",
    computeFilter: function(string) {
      if (!string) {
        // set filter to null to disable filtering
        return null;
      } else {
        // return a filter function for the current search string
        string = string.toLowerCase();
        return function(item) {
          var name = item.__firebaseKey__.toLowerCase();
          var order = item.order.toLowerCase();
          return (name.indexOf(string) != -1 ||
            order.indexOf(string) != -1);
        };
      }
    },
    _computeSort: function(a, b) {
      if (a.__firebaseKey__ == b.__firebaseKey__) {
        return 0;
      }
      return a.__firebaseKey__ > b.__firebaseKey__ ? -1 : 1;
    },
    properties: {
      items: {
        type: Array
      }
    }
  });
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

聚合物1.x dom-repeat无法正常工作

来自分类Dev

聚合物dom-repeat属性不起作用

来自分类Dev

聚合物dom-repeat属性不起作用

来自分类Dev

dom-repeat内的聚合物动态禁用

来自分类Dev

聚合物1.0-在模板内部显示值的问题为“ dom-repeat”

来自分类Dev

聚合物1.0:通过dom-repeat中的id访问元素

来自分类Dev

聚合物1.0,如何实现无限嵌套dom-repeat

来自分类Dev

聚合物1.0-在模板内部显示值的问题为“ dom-repeat”

来自分类Dev

聚合物dom-repeat和铁ajax调用的显示结果

来自分类Dev

聚合物铁选择器将dom.repeat中的this.push()弄乱了

来自分类Dev

聚合物:使用dom-repeat中的按钮上的点击处理程序破坏数据绑定

来自分类Dev

聚合物dom-repeat不呈现功能作为项目的更改

来自分类Dev

聚合物进料值进入第二个 dom-repeat

来自分类Dev

聚合物铁媒体查询不适用于 dom-repeat 元素

来自分类Dev

飞镖聚合物更新聚合物dom元素

来自分类Dev

飞镖聚合物更新聚合物dom元素

来自分类Dev

聚合物1.0:在纸张菜单元素内部使用模板dom-repeat来显示选择时的铁页

来自分类Dev

聚合物::使用Iron-ajax导入数据时,无法定位dom-repeat中的元素

来自分类Dev

dom-repeat 中的聚合物纸对话框在删除其他数组项时打开

来自分类Dev

聚合物:轻型DOM与本地DOM

来自分类Dev

聚合物“ DOM绑定”更新绑定

来自分类Dev

访问聚合物中的DOM

来自分类Dev

聚合物成分影响外部DOM

来自分类Dev

聚合物1嵌套的dom(如果dom重复内)在数据更改时不更新

来自分类Dev

聚合物中中继器的字母排序

来自分类Dev

没有阵列的聚合物dom重复

来自分类Dev

导入后聚合物更新DOM元素

来自分类Dev

聚合物阴影dom元素的基于类的CSS样式

来自分类Dev

聚合物及其阴影DOM中的CSS封装限制

Related 相关文章

  1. 1

    聚合物1.x dom-repeat无法正常工作

  2. 2

    聚合物dom-repeat属性不起作用

  3. 3

    聚合物dom-repeat属性不起作用

  4. 4

    dom-repeat内的聚合物动态禁用

  5. 5

    聚合物1.0-在模板内部显示值的问题为“ dom-repeat”

  6. 6

    聚合物1.0:通过dom-repeat中的id访问元素

  7. 7

    聚合物1.0,如何实现无限嵌套dom-repeat

  8. 8

    聚合物1.0-在模板内部显示值的问题为“ dom-repeat”

  9. 9

    聚合物dom-repeat和铁ajax调用的显示结果

  10. 10

    聚合物铁选择器将dom.repeat中的this.push()弄乱了

  11. 11

    聚合物:使用dom-repeat中的按钮上的点击处理程序破坏数据绑定

  12. 12

    聚合物dom-repeat不呈现功能作为项目的更改

  13. 13

    聚合物进料值进入第二个 dom-repeat

  14. 14

    聚合物铁媒体查询不适用于 dom-repeat 元素

  15. 15

    飞镖聚合物更新聚合物dom元素

  16. 16

    飞镖聚合物更新聚合物dom元素

  17. 17

    聚合物1.0:在纸张菜单元素内部使用模板dom-repeat来显示选择时的铁页

  18. 18

    聚合物::使用Iron-ajax导入数据时,无法定位dom-repeat中的元素

  19. 19

    dom-repeat 中的聚合物纸对话框在删除其他数组项时打开

  20. 20

    聚合物:轻型DOM与本地DOM

  21. 21

    聚合物“ DOM绑定”更新绑定

  22. 22

    访问聚合物中的DOM

  23. 23

    聚合物成分影响外部DOM

  24. 24

    聚合物1嵌套的dom(如果dom重复内)在数据更改时不更新

  25. 25

    聚合物中中继器的字母排序

  26. 26

    没有阵列的聚合物dom重复

  27. 27

    导入后聚合物更新DOM元素

  28. 28

    聚合物阴影dom元素的基于类的CSS样式

  29. 29

    聚合物及其阴影DOM中的CSS封装限制

热门标签

归档