如何使用聚合物2.0中的一页中的数据

时间:2018-01-30 19:11:27

标签: polymer

我有一个html文件进行休息调用并获取数组中的数据。我该如何使用另一个文件。我希望能够访问和操作数据,并在点击下一个按钮时打印数组中的每个元素。 my-assessment.html包含已加载的数据,my-quiz.html应包含循环数据的下一个和上一个按钮。

MY-assessment.html

<link rel="import" href="../bower_components/polymer/polymer-element.html">
<link rel="import" href="../bower_components/polymer-simple-slider/simple-slider.html">
<link rel="import" href="../bower_components/promise-polyfill/promise-polyfill-lite.html">
<link rel="import" href="../bower_components/iron-ajax/iron-ajax.html">



<dom-module id="my-assessment">
    <template>          
        <button on-click="getAssessment">Load Assessment</button>

        <!--Check the url is correct ! And last responce property should be {{}} instead [[]] (as up way data binding) -->
        <iron-ajax
            id="requestRepos"
            url="http://192.168.178.31:8080/demo/assessment" 
            handle-as="json"
            last-response="{{repos}}"
        </iron-ajax>

    </template>
    <script>
        class Assessment extends Polymer.Element {
            static get is() { return 'my-assessment'; }
            static get properties() {
                return {
                    repos: {
                        type : Array,
                        observer : 'isQuestionsLoaded'
                    }
                }
            }
            // set this element's employees property
            constructor() {
                super();
            }

            isQuestionsLoaded(q) {
                if (q) {
                  console.log('loaded questions', q); // questions are loaded.
                 }
                 this.questions = q;
            }

            getAssessment() {
                this.$.requestRepos.generateRequest();
            }    
        }
        window.customElements.define(Assessment.is, Assessment);
    </script>
</dom-module>

MY-quiz.html

<link rel="import" href="../bower_components/polymer/polymer-element.html">
<link rel="import" href="../bower_components/polymer-simple-slider/simple-slider.html">
<link rel="import" href="../bower_components/promise-polyfill/promise-polyfill-lite.html">
<link rel="import" href="../bower_components/iron-ajax/iron-ajax.html">
<link rel="import" href="my-assessment.html">



<dom-module id="my-quiz">
    <template>          

        <my-assessment>
        </my-assessment>
    </template>
    <script>
        class Quiz extends Polymer.Element {
            static get is() { return 'my-quiz'; }
            static get properties() {
                return {
                    index: {
                        type: Number,
                        value: 0
                    } 
                }
            }
            // set this element's employees property
            constructor() {
                super();
            }


        }
        window.customElements.define(Quiz.is, Quiz);
    </script>
</dom-module>

1 个答案:

答案 0 :(得分:1)

在上面显示的情况下,这两个元素之间具有子父关系。元素my-quiz包含元素my-assessment。从它的子元素传递数据可以通过双向数据绑定完成。因此,您必须将news:true添加到您的repos属性,并使用双向数据绑定语法,如我的示例所示。

子元素属性:

 static get properties() {
      return {
           repos: {
              type : Array,
              notify: true,
              observer : 'isQuestionsLoaded'
           }
       }
  }

父元素:

<dom-module id="my-quiz">
  <template>          
      <my-assessment repo-data="{{repos}}"></my-assessment>
  </template>
  <script>
    class Quiz extends Polymer.Element {
        static get is() { return 'my-quiz'; }
        static get properties() {
            return {
                repoData: {
                    type: Array,
                    observer: '_dataChanged'
                } 
            }
         }

        constructor() {
            super();
        }
        _dataChanged(data) {
           console.log('Data changed:', data)
        }
    }
    window.customElements.define(Quiz.is, Quiz);
  </script>
</dom-module>

正如您所看到的,我使用了双向数据绑定语法{{}}来获取从您的子元素发送的数据。将观察变化并将其记录在控制台中。

要了解更多相关信息,您可以查看Polymer documentation