1

我使用 Polymer Starter Kit 1.0.3。

我的应用程序有不同类型的页面。其中一些应该将从请求接收到的数据呈现给后端 API。

但是当应用程序启动时,所有页面的所有请求都会立即启动。

问题是如何用后端做正确的工作?

4

2 回答 2

0

铁阿贾克斯,这是与后端的主要元素聚合物工作。

这是我项目中的一个示例

  <iron-ajax auto
             verbose="true"
             url="[[apiCategories]]"
             handle-as="json"
             on-response="_onCategoriesLoadComplete"></iron-ajax>
  <iron-ajax auto
             id="ajaxWeapons"
             verbose="true"
             url="[[apiWeapons]]"
             params="[[apiWeaponsParams]]"
             debounce-duration="300"
             handle-as="json"
             last-response="{{page}}"></iron-ajax>
  <iron-ajax auto
             verbose="true"
             url="{{apiCountries}}"
             handle-as="json"
             last-response="{{countries}}"></iron-ajax>

这非常有用,当 param 更改或 id 更改时,整个页面的数据将重新加载,这是使用后端的最简单方法。

也许您不想自动请求,例如在我的代码中

<iron-ajax id="ajaxUserRegister"
           verbose="true"
           url="{{apiUsers}}"
           method="PUT"
           on-response="_onUserRegisterComplete"
           content-type="application/json"
           handle-as="json"></iron-ajax>
<iron-ajax id="ajaxUserLogin"
           verbose="true"
           url="{{apiUsers}}"
           method="POST"
           on-response="_onUserLoginComplete"
           content-type="application/json"
           handle-as="json"></iron-ajax>
<iron-ajax id="ajaxUserGet"
           verbose="true"
           url="{{apiUsers}}"
           method="GET"
           headers="[[user.headers]]"
           on-response="_onUserGetComplete"
           content-type="application/json"
           handle-as="json"></iron-ajax>

您还可以在需要时使用后端源

com._userLogin = function () {
    var {inputAccount:account,inputPassword:pwd} = this;
    if (!(account && account.length >= 4)) {
      this.showToast('Wrong account');
      return
    }
    if (!(pwd && pwd.length >= 4)) {
      this.showToast('Wrong password');
      return
    }

    this.$.ajaxUserLogin.body = {name: account, password: pwd};
    this.$.ajaxUserLogin.generateRequest();
  };

  com._onUserLoginComplete = function (e, ajax) {
    if (ajax.response.error) {
      this.showToast('Login faield:' + ajax.response.error);
      return
    }
    this.user = ajax.response;
  };

总之,将您的后端资源定义为iron-ajax,这就是聚合物与后端一起工作的方式。

于 2015-09-13T15:47:32.890 回答
0

我遇到了和你一样的问题,我找到的解决方案是在我的元素中使用方法来调用一个函数,当我真的需要它时它会向后端请求信息。对不起我的英语不好。

于 2015-09-05T14:29:07.077 回答