Ich versuche, ein Attribut zu einer iron-ajax
Vorlage dynamisch zuzuweisen, aber es wird in undefiniert aufgelöst.Warum verschwindet die Eigenschaft dieses Polymerelements zu undefiniert?
<dom-module id="products-service">
<style>
:host {
display: none;
}
</style>
<template>
<iron-ajax id="productsajax"
auto
url="http://localhost:3003/api/taxons/products"
params='{"token":"my-token"}'
method='GET'
on-response='productsLoaded'
handleAs='json'>
</iron-ajax>
</template>
</dom-module>
<script>
(function() {
Polymer({
is: 'products-service',
properties: {
categoryid: {
type: String,
notify: true,
reflectToAttribute: true
}
},
//here I am trying to add and `id` to the `iron-ajax` `params` attribute.
ready: function() {
this.$.productsajax.params.id = this.categoryid;
}
});
})();
</script>
Die resultierende URL sieht wie folgt aus:
`http://localhost:3003/api/taxons/products?token=my-token&id=undefined`
Die dom-module
‚s categoryid
Eigenschaft ist nicht undefined
wie ich die richtige Eigenschaftswert auf den Attributen reflektiert sehen können, was bedeutet es, etwas zu tun, wie Ich weise es dem Attribut zu. Ich habe das auch auf den created
und attached
Callbacks versucht und immer noch nicht funktioniert.
Edit: Die categoryid
an das Modul übergeben, wenn es wie folgt instanziieren:
<products-service products="{{products}}" categoryid="{{categoryid}}"></products-service>
Wie hier die an den Dienst weitergegeben categoryid
gesehen bereits einen Wert hat. (Die Elementnamen auf dem Bild kann etwas anders sein. Ich sie verkürzt die Frage weniger ausführlich zu machen.)
Der category-products-list
in dem die Dienstleistung wie folgt aussieht
<dom-module id="category-products-list">
<template>
<category-products-service products="{{products}}" categoryid="{{categoryid}}"></category-products-service>
<div>
<template is="dom-repeat" items="{{products}}">
<product-card on-cart-tap="handleCart" product="{{item}}">
<img width="100" height="100">
<h3>{{item.name}}</h3>
<h4>{{item.display_price}}</h4>
</product-card>
</template>
</div>
</template>
</dom-module>
<script>
(function() {
Polymer({
is: 'category-products-list',
properties: {
categoryid: {
type: String,
notify: true,
reflectToAttribute: true
}
},
ready: function() {
//this is undefined too
console.log("categoryid in the list module: "+categoryid)
}
});
})();
</script>
Woher kommt der categoryid kommen aus? Wo findet es statt? Was passiert, wenn Sie console.log hinzufügen (this.categoryid); in deiner fertigen Funktion? –
Ich habe die Frage mit den gesuchten Informationen bearbeitet. Wenn ich 'console.log (this.categoryid);': Ich bekomme 'undefined' –
das Problem ist, wie Sie die KategorieID in die Produkte-Service übergeben ... es ist kein Problem in der Produkt-Service-Element selbst . Wenn Sie products-service> tun, wird es funktionieren. Die nächste Frage ist also, woher bekommst du das categoryid? Ich weiß nicht, woher du die {{categoryid}} bekommst, aber ich nehme eine wilde Vermutung: Du könntest versuchen products-service> –