2016-02-24 2 views
2

Возможно ли установить/изменить обратные вызовы на iron-ajax? У меня есть переменное количество запросов для разных обратных вызовов для каждого.Настройка обратного вызова на Polymer iron-ajax

+1

ИМО, вы должны сделать один «iron-ajax» для каждого _response_, который вас интересует, вместо того, чтобы пытаться заставить один «iron-ajax» управлять несколькими ответами. –

+0

ребята, зачем нам вообще нужен элемент DOM «iron-ajax'? почему бы не вызвать api напрямую через обычные 'fetch' или' xhr'? – Artin

ответ

0

Как сказал Скотт в комментарии, вы должны использовать отдельный iron-ajax для каждого запроса. ОДНАКО, если вы хотите динамически запрашивать запросы, я склонен использовать динамически созданный запрос железа - хотя бы потому, что он возвращает обещание, и я могу нести это. Вот маленький пример

var dataPromise = new Promise(function(accept, reject) { 
     var sendOptions = { 
     url: '/api/queries', 
     method: 'POST', 
     handleAs: 'json', 
     headers: {'content-type': 'application/json'} 
     }; 
     body = {}; 
     body.name = name; 
     if (useId) { 
     body.id = parent.id; 
     } 
     if (useDates) { 
     body.startdate = parent.startdate; 
     body.enddate = parent.enddate; 
     } 
     sendOptions.body = body; 
     var request = document.createElement('iron-request'); 
     request.send(sendOptions).then(function() { 
     accept(request.response); 
     }); 
    }); 

, а затем я могу передать dataPromise вокруг, и когда я хочу, нужны результаты запроса я делаю (в моем случае в совершенно отдельный элемент) ...

open: function(dataPromise, params, x, y) { 
    var self = this; 
    this.x = x; 
    this.y = y; 
    dataPromise.then(function(data) { 
     self.title = data.name; 
     self.heading = data.heading; 
     self.data = data.data; 
     self.$.griddialog.open(); 
    }); 
    this.params = params; 
    }, 
+0

ничего себе, что выглядит ужасно для меня. означают весь подход к сквозному запросу. это можно легко сделать с помощью fetch() справа или просто обычного XHR? теперь вам нужно создать обертку над элементом DOM, чтобы сделать запрос ajax. .. смешно – Artin