Я пытаюсь динамически назначить атрибут шаблону 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`
Свойство categoryid
dom-module
не является undefined
, так как я вижу правильное значение свойства, отраженное в атрибутах, что означает, что это как-то связано с тем, как я назначаю его атрибуту. Я также пробовал это на обратных вызовах created
и attached
и все еще не работает.
Редактировать: 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>
console.log(this.categoryid);
: я получаюundefined
- person Optimus Pette   schedule 09.06.2015categoryid
, переданный службе, уже имеет значение. - person Optimus Pette   schedule 10.06.2015ready
, поэтомуconsole.log
не должно возвращатьundefined
. Пожалуйста, скопируйте и вставьте весь код для компонента как есть (за вычетом любых токенов безопасности), так как я подозреваю, что ответ заключается в опечатке или что-то в этом роде. - person Zikes   schedule 10.06.2015dom-module
.categoryid
в этом модуле по адресуready
также являетсяundefined
, но он доступен, когда он присутствует при передаче службеdom-module
. - person Optimus Pette   schedule 10.06.2015page('/categories/:name/:categoryid', function (data) { app.route = 'category-page'; app.params = data.params; });
- person Optimus Pette   schedule 10.06.2015