2

我正在使用聚合物入门套件。我必须在不同的 HTML 页面中进行许多 API 调用,并且对于每个 API 调用,我使用“iron-ajax”作为“url”属性,我正在分配 REST API URL。

URL 将类似于“ https://XXXXX.in/YY/YY/YY ”,这里所有 API 调用的基本 URL XXXXX 都是相同的,并且 YY 会改变。那么我怎样才能将基本 URL XXX 存储在一个配置文件中并访问它所有“iron-ajax”的所有页面的价值?我应该在哪里访问基本 URL,它是否在聚合物的所有页面的“就绪”功能中?

4

1 回答 1

6

选项1

在 Polymer 中,您可以将值存储为属性。如果您将基本 URL 作为节点树顶部的属性(在第一个父元素中),则可以将其传递给任何子元素(然后它们可以进一步向下传递)。

你的首要元素:

<link rel="import" href="./child-el.html">
<dom-module id="main-el">
    <template>
        <child-el base-url="[[baseUrl]]"></child-el>
    </template>
</dom-module>
<script>
    Polymer({
        is: 'main-el',
        properties: {
            baseUrl: {
                type: String,
                value: 'https://XXXXX.in'
            }
        }
    });
</script>

孩子:

<dom-module id="child-el">
    <template>
        <iron-ajax url="[[baseUrl]]/YY/YY/YY"></iron-ajax>
    </template>
</dom-module>
<script>
    Polymer({
        is: 'child-el',
        properties: {
            baseUrl: {
                type: String
            }
        }
     });
 </script>

选项 2

您可以将所有 ajax 调用放在一个不会在屏幕上呈现任何内容的元素中,并将该元素包含在您需要的任何位置。

<link rel="import" href="./api-handler.html">
<dom-module id="main-el">
    <template>
        <api-handler id="api-handler"></api-handler>
    </template>
</dom-module>
<script>
    Polymer({
        is: 'main-el',
        attached () {
            this.$['api-handler'].makeRequest();
        }
    });
</script> 

选项 3

将 baseUrl 属性存储在 Polymer行为中,并将其包含在您的元素中。

选项 4

您可以将该值附加到全局可访问的窗口对象。您的 config.html 看起来像:

<script>
    (function (Config) {
        Config.BASE_URL = 'https://XXXXX.in';
    })(window.Config = window.Config || {});
</script>

然后你在你的 index.html 中导入它:

<link rel="import" href="./config.html">

..和 Config.BASE_URL 将在您的所有元素中可用。

于 2017-05-06T18:07:28.070 回答