使用来自父元素的String的Iron-ajax url不起作用

时间:2017-04-13 15:09:52

标签: data-binding polymer computed-properties iron-ajax

在我的Polymer应用程序中,我想读取一个JSON文件,为此我使用了一个元素。 url的一部分由当前使用此元素的元素的父元素发送。 我的字符串已正确恢复,我试图只显示它,它返回我想要的。 问题是,如果我只是将String放在我的url路径中:

<iron-ajax auto url="questions/{{path}}.json" handle-as="json" last-response="{{questions}}"></iron-ajax>

它不起作用,我在其他线程上读到,其原因是使用了无法在url路径中使用的动态字符串,因为String是数据绑定的。 / p>

如果我手动编写了网址,它可以正常工作:

<iron-ajax auto url="questions/listQuestions.json" handle-as="json" last-response="{{questions}}"></iron-ajax>

所以我试图计算我的值只是返回一个字符串,但它也没有工作。它已经花了好几个小时试图在互联网上提出解决方案和研究解决方案,但它只是没有用。

这是我尝试的计算属性的代码:

properties: {
            path :String,

            url: {
                type: String,
                notify: true,
                computed: 'computeurl(path)'
            }
},

_acces: function(path) {
            return "questions/"+path+".json";
},

computeurl: function(path) {
            return path;
}

当我试图像这样显示它们时:

<p><span>[[_acces(path)]] or [[url]] or [[path]]</span></p>

我得到了:

Display computed properties

2 个答案:

答案 0 :(得分:1)

如果要对某些属性使用绑定,则需要将其与$符号一起使用。 您的示例必须具有以下视图:

<iron-ajax auto url$="questions/{{path}}.json" handle-as="json" last-response="{{questions}}"></iron-ajax>

答案 1 :(得分:0)

这应该是你:

<template>
    <iron-ajax auto
               url="[[_computeUrl(path)]]"></iron-ajax>
</template>
<script>
    ...
    properties: {
        "path": {
            type: String,
            value: function() {
                return 'listQuestions';
            }
        }
    },
    _computeUrl: function(path) {
        return 'questions/' + path + '.json';
    }

</script>

更新2017-4-26:查看粘贴后,您错过了对iron-ajax的bower_component引用;在这里看到pastebin:https://pastebin.com/ShqzedyW。还列出了您尚未命名的几个属性,使url成为计算属性。现在看看。