2

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

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

它不起作用,我在其他线程上读到,这是因为使用了不能在 url 路径中使用的动态字符串,因为字符串是数据绑定的。

如果我手动编写 url 它工作得很好:

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

所以我试图计算我的值以只返回一个字符串,但它也不起作用。尝试提出解决方案并在 Internet 上研究解决方案已经花费了数小时,但它不起作用。

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

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>

我有 :

显示计算属性

4

2 回答 2

1

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

<iron-ajax auto url$="questions/{{path}}.json" handle-as="json" last-response="{{questions}}"></iron-ajax>
于 2017-04-14T19:37:39.740 回答
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 更新:查看您的粘贴后,您缺少 bower_component 对iron-ajax;的引用 在此处查看 pastebin:https ://pastebin.com/ShqzedyW 。还列出了一些您没有命名的属性,它们url是计算属性。现在检查一下。

于 2017-04-13T22:07:48.350 回答