Полимерная Ajax-привязка из параметра маршрутизации не работает

Я использую iron-pages и app-router, чтобы отправить меня на новую страницу, где мне нужен элемент iron-ajax для отправки запроса с параметром, отправленным с маршрутизатора.

Однако, когда я пытаюсь добавить свой параметр {{parameter.identifier}} в железный ajax, он не работает.

Я подозреваю, что это как-то связано с локальными параметрами маршрутизации, и что iron-ajax его не видит? Я попытался добавить свойство для параметра и функцию получения, но, похоже, ничего не работает...

Кроме того, я знаю, что ajax верен, поскольку, если я изменю переменную привязки {{parameter.identifier}} на значение, которое существует в базе данных, оно хорошо запрашивает.

<dom-module id="cst-data">
    <template>
        <style> 

    </style>

    <triplat-route name="dataRoute" params="{{parameters}}"></triplat-route>

    <iron-ajax
    id="getData"
    auto
    url="http:/.../oslc/os/OSLCPERSON?"
    params='{"oslc.where":"dcterms:identifier={{parameters.identifier}}"
            }'  

    headers='{"Content-Type": "application/json;charset=utf-8"'     
    handle-as="json"
    on-response="handleResponse"
    ></iron-ajax>
            <paper-card>{{parameters.identifier}}</paper-card>
            <paper-card>{{dataRes.name}}</paper-card>
</template>
</dom-module>
<script>
    Polymer({

        is: "cst-data" ,
        handleResponse: function () {
            this.dataRes = this.$.getData.lastResponse['rdfs:member'];
            }

    });
</script>

2 ответа

То, как ты это сделал, правильно. Это нормально, что функция _getParams вернуть всю строку запроса.

внутри _getParams функция, вам не нужно использовать this.parameter.identifier но только parameter.identifier потому что вы проходите identifier в эту функцию в качестве аргумента от привязки {{_getParams(parameter)}}, Это отличный подход, потому что всякий раз, когда this.parameter изменения, функция _getParams вызывается автоматически. В противном случае вы не сможете когда-либо снова изменить params в iron-ajax

Я нашел решение,

Что я смог найти, так это то, что параметры в iron-ajax не могут обрабатывать динамические входы, так что в конце концов я начал работать с функцией получения. Затем возникла другая проблема, заключавшаяся в том, что при возвращении получателя вводились символы, а не строка запроса, сначала добавляя новую временную строку и возвращая строку, которую я смог исправить.

    <triplat-route id="maximoDataRoute" name="maximo-data" params="{{parameter}}"></triplat-route>

<iron-ajax
    id="ajax"
    url="http://.../"
    headers='{"Content-Type": "application/json;charset=utf-8"'     
    handle-as="json"
    params$='{{_getParams(parameter)}}'
    on-response="handleResponse"
    auto></iron-ajax>

<script>

    Polymer({

        is: "cst-employee-maximo-data" ,
        properties: {
            res: Object,
            tempString: String,
            parameter :{
                type: Object,
                notify: true
            },
        },
        handleResponse: function (event) {
            console.log("Entering handleResponse")
            this.res = event.detail.response['member'];
            console.log(this.res)   
        },

       _getParams: function(parameter) {
        this.tempString = '{"oslc.where":"dcterms:identifier='+ this.parameter.identifier+'","oslc.select":"*"}'
        console.log("tempString: "+this.tempString)
        return this.tempString   
       }

   });
</script>

Еще одна интересная вещь, которую я заметил, заключалась в том, что в функции _getParameters мне приходилось вводить параметр, и неважно, что я ввел, но если его не было, "параметр.identifier" был неопознан, если кто-то может это объяснить это будет с благодарностью!

Другие вопросы по тегам