Notify:
可以设置为 True|False。假设你有parent-element
and child-element
。工作示例
父元素.html:
<dom-module id="parent-element">
<template>
<child-element foo="{{test}}"></child-element>
</template>
<script>
Polymer({
is: "parent-element",
properties: {
test: {
value: "bar"
}
}
})
</script>
</dom-module>
如您所见,我们有 1 个属性,名为test
它被传播到子元素,我们可以在其中对其进行操作。
子元素.html:
<dom-module id="child-element">
<template>
<paper-input value="{{test}}"></paper-input>
</template>
<script>
Polymer({
is: 'child-element',
properties: {
test: {
}
},
});
</script>
</dom-module>
怎么了?在子元素中我们定义了test
属性并且该属性绑定到paper-input
,这意味着,每当我们写一些东西paper-input
,属性会自动更新。是的,太棒了,我们不需要关心更新里面的属性child-element
,但是父母怎么知道这个财产test
已经改变?好吧,他不能。
来了notify: true
。如果设置了就不用关心通知了parent-element
里面的某个地方child-element
, test
属性已更改。
不久之后,财产test
in parent-element
and child-element
将同步更新
反映到属性:
正如名称所示,当您将其设置为某个属性时,它的值将在宿主元素的属性中可见。最好用一些例子来展示这一点。
In Polymer
我们知道,设置某些元素的属性绑定需要$
sign.
<custom-elem foo-attribute$="[[someProperty]]"></custom-elem>
嗯,这不能在任何地方都使用。假设我们需要foo-attribute
inside custom-elem
.
Becuase foo-attribute
被声明为属性而不是属性,它的值在元素内部不可见。所以我们需要一些属性来代表属性和属性。
所以一些实际情况的工作示例如下:
<dom-module id='parent-element'>
<template>
<style>
child-elemet[foo='bar'] {background-color: green}
child-element[foo='foo'] {background-color: red}
</style>
<child-element foo="{{test}}"></child-element>
</template>
<script>
Polymer({
is: "parent-element",
properties: {
test: {
value: "bar"
}
}
})
</script>
</dom-module>
在这种情况下,CSS 将不起作用,因为foo
是属性(不是属性),CSS 仅应用于属性。
为了让它工作,我们必须添加reflectToAttribute
on foo
里面的财产child-element
.
<dom-module id='child-element'>
<template>
<div>[[foo]]</div>
</template>
<script>
Polymer({
is: "child-element",
properties: {
foo: {
reflectToAttribute: true
}
}
})
</script>
</dom-module>
在这之后,foo
将成为属性,也成为财产。此时CSS将被应用到child-element
我们将能够以以下价值开展工作foo
inside child-element