我在我的元素中使用dom-repeat
模板,我想在新元素中使用该元素(typeElement
)的属性<custom-element>
({{1 } {}来自<media-element>
:
dom-repeat
我该怎么做?
答案 0 :(得分:1)
我不确定“使用该属性”是什么意思,所以我在下面做出假设。
假设您要将<media-element>.someProp
设置为<custom-element>.typeElement
的值,那么您的数据绑定是正确的。只要typeElement
的值发生变化,someProp
就会设置为相同的值。您可以使用<media-element>
的{{1}}方法访问该值。例如:
this.someProp
假设您还希望更改<dom-module id="media-element">
<template>...</template>
<script>
Polymer({
is: 'media-element',
properties: {
someProp: Number
},
foo: function() {
console.log(this.someProp);
}
});
</script>
</dom-module>
更新<media-element>.someProp
,那么您需要在<custom-element>.typeElement
的属性声明中设置notify: true
:
someProp
// media-element
properties: {
someProp: {
type: Number,
notify: true // <-- only needed for upward notifications (two-way data binding and observers)
}
}
HTMLImports.whenReady(() => {
Polymer({
is: 'custom-element',
properties: {
typeElement: {
type: Number,
value: 100,
observer: '_typeElementChanged'
}
},
_typeElementChanged: function(typeElement) {
console.log('new typeElement', typeElement);
}
});
Polymer({
is: 'media-element',
properties: {
someProp: {
type: Number,
notify: true
}
},
_logSomeProp: function() {
console.log('someProp', this.someProp);
},
_incrementSomeProp: function() {
this.someProp++;
}
});
});
我建议阅读Polymer Data Binding。
答案 1 :(得分:0)
因为设置属性如:
typeElement: Number
无效。您必须像定义array
属性一样定义它。这样:
typeElement: {
type: Number,
value: Number,
}
我不知道你想拥有什么价值。在此之后它应该工作
答案 2 :(得分:0)
好的,我想我自己,问题不在这里。问题出在子元素(<media-element>
)上。所以我将发布一个新问题来解决问题:
如何在元素创建之前初始化元素的属性?或者,如何在属性更改/初始化之后触发dom-if调用我的条件函数?
我的代码:
<dom-module id="media-element">
<template>
<template is="dom-if" if="[[isType(0)]]">
....
</template>
</template>
<script>
Polymer({
is: 'media-element',
properties: {
myType: {
type: Number,
value: 0
}
},
isType: function(t){return (this.myType===t);}
});
</script>
</dom-module>
更新:我发送了我的问题并收到了一个goode答案:here