如何从自定义元素

时间:2017-05-14 04:25:39

标签: polymer

我正在学习使用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,该属性总是很好。即,如果我离线它反映离线,如果上线然后它在线显示我。所以我假设行为在工具栏中工作正常,似乎只有更新我自己的属性时才会出现问题。

1 个答案:

答案 0 :(得分:0)

我认为您尝试以错误的方式使用behavior因为它只在组件之间共享一些代码。因此,您可以使用其他解决方案,例如数据绑定或触发一些custom event并在另一个元素中设置属性值