Я пытаюсь динамически назначать атрибут шаблону iron-ajax
, но он разрешает неопределенное.Почему свойство этого полимерного элемента не определено?
<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>
Результирующий URL выглядит следующим образом:
`http://localhost:3003/api/taxons/products?token=my-token&id=undefined`
dom-module
«s categoryid
свойство не undefined
, как я могу видеть правильное значение свойства отражается на атрибутах что означает, что что-то делать с тем, как присваивая его атрибуту. Я также пробовал это на created
и attached
обратных вызовах и все еще не работает.
Edit: categoryid
передается в модуль при инстанцировании это так:
<products-service products="{{products}}" categoryid="{{categoryid}}"></products-service>
Как видно здесь на categoryid
передается службе уже имеет значение. (Имена элементов на изображении может немного отличаться. Я укоротить их, чтобы сделать этот вопрос менее многословным.)
category-products-list
где услуга называют выглядит как этот
<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>
Где делает CategoryID взялось? Где он установлен? Что происходит, когда вы добавляете console.log (this.categoryid); в вашей готовой функции? –
Я отредактировал вопрос с информацией, которую вы ищете. Когда я делаю 'console.log (this.categoryid);': я получаю 'undefined' –
, проблема в том, как вы передаете categoryid в службу продуктов ... это не проблема в самом элементе продукта-сервиса , Если вы выполняете products-service>, он будет работать. Итак, следующий вопрос: откуда вы получаете категорию? Я не знаю, откуда вы получаете {{categoryid}}, но я собираюсь принять дикое предположение: вы можете попробовать products-service> –