【问题标题】:Polymer 2.x - how to make this search-filter work?Polymer 2.x - 如何使这个搜索过滤器工作?
【发布时间】:2017-12-17 23:32:35
【问题描述】:

我想为 Polymer 2.x Web 应用程序中的元素实现搜索过滤器。
我在下面有来自 Polymer 1.x 的代码,但我不确定如何让它在 Polymer 2.x 中工作

如何从下面的 Polymer 1.x 制作代码以在此 Polymer 2.x 页面上工作:

我的家.html |脚本区

  <script>
    class Myhome extends Polymer.Element {
      static get is() { return 'my-home'; }
    }

    window.customElements.define(Myhome.is, Myhome);
  </script>

Polymer 1.x 中的搜索过滤器代码:

html

 <div class="app-grid" style="display: flex;">
    <template items="[[data]]">
      <div class="item horizontal wrap layout" style="width: 300px; height: 300px; margin: 2%;">
        <paper-card heading="[[item.title]]" image="http://lorempixel.com/300/200">
           <div class="card-content">[[item.description]]</div>
           <div class="card-actions">
             <paper-button>Button</paper-button>
           </div>
        </paper-card>
      </div>
    </template>
  </div>

脚本

<script>
    Polymer({
      is: 'my-home',
      properties:{
          defaultData:{
            type:Array,
            value:[{title:'Color picture',description:'An RGB picture'},
              {title:'Grey image',description:'That\'s a grey picture'},
              {title:'3',description:'this is content 3'}]
          },
          data:{
            type:Array
          }
        },
        ready:function(){
          this.data = this.defaultData;
          this.$.search.addEventListener('keyup',this.searchChanged.bind(this));
        },
        searchChanged:function(e){
          var querySearch = this.$.search.value.toLowerCase();
          if(querySearch == ''){
            this.data = this.defaultData;
          }else{
            this.data = this.defaultData.filter(function(item){
              return item.title.toLowerCase().indexOf(querySearch) !== -1 || item.description.toLowerCase().indexOf(querySearch)  !== -1;
            });
          }
        }
    });
  </script>

【问题讨论】:

    标签: polymer custom-component polymer-2.x custom-element


    【解决方案1】:

    您的许多脚本都必须进行更改,其中最值得注意的可能是升级到基于类的元素。 See the relevant section in the Polymer upgrade guide. 这将包括adding a call to super.ready() 作为ready() 函数的第一行

    【讨论】:

    • 谢谢。只是,Polymer 太令人困惑了……作为一个新手开发人员,甚至很难开始理解它,因为没有任何好的教程可以展示在项目中构建和实现不同组件的整个过程。我想我会改用 Vue.js。
    • 哦,我个人不同意,并发现 Polymer 对我们的团队来说是一种比我使用过的任何其他框架更好的入职体验,尤其是因为纸张元素对你来说非常有用。
    • 嗯,我也喜欢它,只是很难深入理解它。大家都是怎么学的呢?您是否只是具有良好的 Web 开发人员背景并且只是使用文档来了解框架的工作原理?
    • 如果您想了解更多信息,我建议您查看聚合物入门套件 (github.com/PolymerElements/polymer-starter-kit)、商店教程应用 (polymer-project.org/2.0/toolbox/case-study) 和新闻教程应用 (polymer-project.org/2.0/toolbox/news-case-study)!
    • 还可以通过“构建应用程序”部分尝试主页上的内容 - polymer-project.org/2.0/start/first-element/intro。当然,如果它不适合你,那就不适合你。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    相关资源
    最近更新 更多