我正在学习使用behaviors,并且遇到了一个问题,即从自定义元素更新行为属性并未反映在另一个自定义元素中。 例如:我创建了behavior.html,profile.html,toolbar.html。个人资料和工具栏正在使用behavior.html。因此,当用户在profile.html中执行特定操作时,我正在更新behavior.html的属性。 Bur toolbar.html未显示更新的值。
我会粘贴下面的示例片段,如果您对我做错的地方有任何建议,请告诉我。
behavior.html
<script>
window.MyBehaviors = window.MyBehaviors || {};
MyBehaviors.SheetsBehaviorImpl = {
properties: {
isActiveUser: {
type: Boolean,
value: false,
notify: true
}
}
MyBehaviors.SheetsBehavior = [
Polymer.AppNetworkStatusBehavior,
MyBehaviors.SheetsBehaviorImpl
];
profile.html
.....
isUserRegisted: function(changeRecord) {
MyBehaviors.SheetsBehaviorImpl.properties.isActiveUser = this.userlist.approved;
//Do some more checks and return a boolean based on the checks
}, .....
toolbar.html
<span>{{isActiveUser}}</span>
工具栏总是显示我的错误,因为那是我初始化的内容。工具栏还共享另一个属性&#34; online&#34;来自AppNetworkStatusBehavior,该属性总是很好。即,如果我离线它反映离线,如果上线然后它在线显示我。所以我假设行为在工具栏中工作正常,似乎只有更新我自己的属性时才会出现问题。
答案 0 :(得分:0)
我认为您尝试以错误的方式使用behavior
因为它只在组件之间共享一些代码。因此,您可以使用其他解决方案,例如数据绑定或触发一些custom event并在另一个元素中设置属性值