聚合物将app-route的数据传递给未定义的自定义元素

时间:2016-11-17 06:31:39

标签: javascript polymer polymer-1.0

我正在尝试将app-route的参数传递给未定义的自定义元素。我可以在文件中显示该参数,但在自定义元素中,它未定义。以下是我的代码,请帮我检查一下如何修复它。感谢。

在自定义元素文件中,getid未定义。

我的档案

<app-route
    route="[[route]]"
    pattern="/:slug/:id"
    data="{{routeData}}"></app-route>

    <!-- display correctly -->
    [[routeData.id]]

<myelement-http-get
    id="getCategoryData"
    getid="[[routeData.id]]"
    geturl="http://localhost:9000/polymer/category/"
    jsonobject="{{jsonobject}}"
    failure="{{failure}}"></myelement-http-get>

自定义元素

<script>
  Polymer({
      is: 'myelement-http-get',

      properties: {
        geturl: String,

        getid: String,

        jsonobject: {
          type: Object,
          notify: true
        },

        failure: {
          type: Boolean,
          notify: true,
          readOnly: true
        }

      },

      ready: function () {
        /* undefined found this.getid */
        this.$.ajaxData.url = this.geturl + this.getid;
        this.$.ajaxData.generateRequest();
      },

      handleResponse: function (data) {
        this.jsonobject = data.detail.response;
      }
  });
</script>

1 个答案:

答案 0 :(得分:1)

numpygetid的数据绑定效果在 geturl回调之后发生,因此您不想操纵这些属性。< / p>

相反,您应该使用complex observer来观察readygetid。只有在定义和更改两个属性时才会调用此观察者(此行为在Polymer 2.0中稍有变化)。

您应该从geturl中删除更改,并添加如下所示的复杂观察者:

ready