创建我自己的iron-ajax元素

时间:2016-04-18 07:45:19

标签: javascript polymer polymer-1.0

我想创建我自己的iron-ajax元素,就像iron-ajax做的那样做多一点,在请求中添加一些标题,此刻我总是通过数据绑定将标题添加到header属性中iron-ajax但我不想在我构建的每个元素上编写代码,我希望iron-ajax Element能够自行完成。

有没有办法延长铁阿贾克斯?

编辑:

<template>
    <iron-ajax
            auto
            url="[[url]]"
            handle-as="json"
            debounce-duration="1000"
            on-response=""
            headers="[[headers]]"
    ></iron-ajax>
</template>
<script>
    (function() {
        'use strict';

        Polymer({
            is: 'em-ajax',

            properties: {
                headers: {
                    type: Object,
                    computed: 'computeHeaders(token)'
                },
                token: {
                    type: String,
                    notify: true,
                    value: "asdf"
                },
                url: {
                    type: String
                }
            },
            computeHeaders: function() {
                return {'Authorization' : 'Bearer {' +  app.accessToken + '}'};
            },
            handleRequest: function(request) {
                console.log("handling request", request);
                request.header = this.computeHeaders();
            }


        });
    })();
</script>

    <em-ajax
            url="http://api.asdf.safd.sdf/profile"
            on-response="handleProfile"
    ></em-ajax>

如何处理响应?使用方法名称传递String似乎不起作用。

我标记的答案是正确的。对于我编辑的问题,我找到了一个解决方案:

                this.fire('em-response', {event: event, request: request});

我在我的自定义ajax元素中触发了一个事件,在我使用自定义ajax元素的元素中添加了一个侦听器。这是一个很好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以将<iron-ajax>嵌入到自己的<fancy-ajax>组件中,并在<fancy-ajax><iron-ajax>之间转发和转发属性。

<dom-module id="fancy-ajax">
  <template>
    <iron-ajax ...></iron-ajax>
  </template>
</dom-module>