首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从父聚合物元素继承(聚合物1.0)

从父聚合物元素继承(聚合物1.0)
EN

Stack Overflow用户
提问于 2015-08-13 23:08:28
回答 1查看 380关注 0票数 1

我使用的是聚合物1.0。我有一个聚合物dom模块:

代码语言:javascript
复制
<parent-node></parent-node>

我正在用我自己的另一个单独的聚合物dom模块填充节点:

代码语言:javascript
复制
<parent-node>
  <child-node></child-node>
</parent-node>

现在,我想在父节点上设置一个布尔属性,它可以使子节点读取并做出反应。但是,当聚合元素从子节点渲染到父节点时,子节点是否可以从父节点读取布尔值dark设置为true的父节点?:

代码语言:javascript
复制
<parent-node dark>
  <child-node></child-node> <!-- Can it read from the parent? -->
</parent-node>

我希望使用一种{{dark}}绑定的方式。父级是否可以发布到子级?

另一种我认为可能实现这一点的方法是通过<child-node> dom-module模板中的CSS。:host很棒,但是有没有办法让我达到:hostparent呢?所以它可能类似于(psuedo代码):

代码语言:javascript
复制
:parent[dark] :host {
   background: #000;      
}

或者,在<parent-node>中是否有一种方法可以命中<content></content>的特定子项。也许聚合物允许穿透<content>的容器以命中特定的类或ids?

有人能帮上忙吗?我目前的实现需要父对象将布尔属性分配给子对象,但我觉得这完全破坏了Polymer的模板和绑定功能的优势……

EN

回答 1

Stack Overflow用户

发布于 2015-08-14 01:08:25

在每个元素上创建一个布尔属性并绑定它们应该不会有任何问题。例如:

代码语言:javascript
复制
<parent-node dark="{{darkValue}}>
  <child-node dark="{{darkValue}}"/>
  <div>{{darkValue}}</div>
<parent-node>

如果"dark“属性将其通知标志设置为true,则这将是一个双向绑定-对其中一个属性的更改将通知另一个。

这里有两个可供实验的元素。在任何一个中激活计时器,暗值都会按预期在父对象和子对象中切换。

代码语言:javascript
复制
Polymer({
  is: 'parent-node',

  properties: {
    dark: {
      type: Boolean,
      notify: true,
      observer: 'log'
    }
  },

  ready: function() {
    var me = this;
    // ACTIVATE THIS TIMER, OR THE CHILD TIMER
    //setInterval(function() {me.dark = !me.dark}, 2000);
  },

  log: function (newVal, oldVal) {
    console.log('parent', newVal);
  }
});

Polymer({
  is: 'child-node',

  properties: {
    dark: {
      type: Boolean,
      notify: true,
      observer: 'log'
    }
  },

  ready: function() {
    var me = this;
    // ACTIVATE THIS TIMER, OR THE PARENT TIMER
    setInterval(function() {me.dark = !me.dark}, 2000);
  },

  log: function (newVal, oldVal) {
    console.log('child', newVal);
  }
});

我不认为有任何简单的方法可以通过绑定到单个parent属性来通知特定的子对象。为此,您可能需要使用dom查询来访问您感兴趣的子项,并直接调用它们(即直接设置它们的暗属性)。

编辑:内容中的绑定。

这也行得通:

代码语言:javascript
复制
<dom-module id="parent-node">
  <style>
    :host {
      display: block;
    }
  </style>

  <template>
    <content></content>
  </template>
</dom-module>

..。并将以下内容添加到html中:

代码语言:javascript
复制
   <parent-node dark="{{darkValue}}">
          <div>dark value of content in parent-node is <span>{{darkValue}}</span></div>
   </parent-node>

父节点的内容中的{{darkValue}}最初是空的,但随后每次父节点切换暗值时都会更新。所以看起来darkValue是绑定到父节点内容的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31992071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档