聚合物数据绑定与对象属性的混淆

时间:2016-07-10 16:08:01

标签: polymer

编辑 - 这是一个完整的红色牧羊人。层次结构中的user个属性之一为用户设置了readOnly属性。这阻止了它的传播。

我正在努力理解数据绑定以及当属性更改时值如何传播我有一个树结构的元素集(结构分布在单独的元素定义 - <content>标记可能暗示的结构如下所示)

<my-app user="{{user}}">
  <my-session user="{{user}}">
    <my-login user="{{user}}"></my-login>
  </my-session>
  <template is="dom-if" if="[[user.name]]">
    <my-pages user="{{user}}">
      <iron-pages>
        <my-menu user="{{user}}"></my-menu>
        <my-reports user="{{user}}"></my-reports>
      </iron-pages>
    </my-pages>
  </template>
</my-app>

这些元素的不同定义中的每一个都定义了一个属性

user : {
  type: Object,
  notify: true
}

所有元素都与双向数据绑定相关联

在用户登录后使用<my-pages>延迟加载

importHref(因此定义了user.name

我有一个名为user的{​​{1}}属性,用于访问控制。特别是keys<my-menu>的子元素都使用它来确定要显示的菜单项。

这一切在初始登录时都能正常工作。但是,如果我更改登录用户,则对用户属性的此更改显然无法正常传播

我可以看到,在从铁页面更改页面期间触发的调试器中,我可以看到<my-reports>&#39; s <my-app>具有新的登录用户值但是{{ 1}}&#39; s user拥有旧用户。出于某种原因,<my-pages>的数据绑定在树结构中不起作用,即使它似乎已成功从user传播到user

我假设可能是&#34;对象&#34; <my-login>的{​​{1}}不仅仅改变路径。我对我应该在这里做什么感到困惑。有人可以帮忙。

1 个答案:

答案 0 :(得分:1)

根据您所提供的信息,除了syntax error而不是关闭my-pages您已经开始新的信息之外,真的无法判断您的代码有什么问题,但是这里&#39 ; sa plunker模仿你的代码。我能够成功地更改所有元素的用户。