【问题标题】:Setting callback on Polymer iron-ajax在 Polymer Iron-ajax 上设置回调
【发布时间】:2016-02-26 06:45:04
【问题描述】:

是否可以在 iron-ajax 上设置/更改回调? 我有不同数量的请求,每个请求都有不同的回调。

【问题讨论】:

  • IMO,您应该为每个您感兴趣的回复制作一个iron-ajax,而不是尝试制作一个iron-ajax来管理多个回复。
  • 伙计们,为什么我们首先需要iron-ajax DOM 元素?为什么不直接通过普通的fetch或者xhr调用api呢?

标签: polymer polymer-1.0


【解决方案1】:

正如 Scott 在评论中所说,您应该为每个请求使用单独的 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;
  },

【讨论】:

  • 哇,这对我来说看起来很糟糕。意思是,整个请求通过元素的方法。这可以很容易地用 fetch() 来完成,或者只是普通的 XHR?现在你必须在 DOM 元素上创建一个包装器来发出 ajax 请求。荒谬的..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多