聚合物如何将返回的铁-ajax线传递到另一个聚合物元素中

时间:2015-08-26 09:08:59

标签: ajax polymer

所以我现在能够抓住铁-ajax数据并将其加载到我的元素中,但是我遇到的一些问题是我在我的父元素中有另一个自定义元素,其中包含&#39 ; workerid'

问题是' workerid'实际上从iron-ajax调用回来了,所以我使用handleResponse处理响应,但此时,它已经使用' null'来附加嵌套元素。为工人身份。

我不确定如何解决这个问题。这是我的代码。

父元素接收var' bookingid'记录在案

<template>

        <!-- Ajax call to retrieve the data -->
        <iron-ajax
            id="ajax"
            method="GET"
            url="../api/bookings/"
            params='{{params}}'
            handle-as="json"
            on-response="handleResponse"
            last-response="{{data}}">
        </iron-ajax>

        <div class="single-booking">

            <div class="assigned-worker-container">
                <user-display userid="{{data.workerid}}"></user-display> 
            </div>

        </div>

</template>


        <script>

        Polymer({
                    is: "job-booking",

                    properties: {
                        data: {
                            type: Object,
                            notify: true
                        },
                        bookingid: String
                    },

                    ready: function(){  

                        // Set parameters   
                        this.params = { 
                                        type: 'cardbooking',    
                                        bookingid: this.bookingid
                                      } 
                        // Run ajax
                        this.$.ajax.generateRequest();

                    },

                    handleResponse: function(){
                        console.log(this.data);                         
                    },

                }); 

    </script>

2 个答案:

答案 0 :(得分:0)

只需使用conditional template检查数据是否存在:

 <template if='{{data.workerid}}'>
    <user-display userid="{{data.workerid}}"></user-display>
 </template>

答案 1 :(得分:0)

最终代码Polymer 1.0

<template is="dom-if" if="{{data.workerid}}">
    <user-display userid="{{data.workerid}}"></user-display>
</template>