首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聚合物核-标签和核-复选框动态

聚合物核-标签和核-复选框动态
EN

Stack Overflow用户
提问于 2014-11-25 14:33:15
回答 1查看 536关注 0票数 1

我试图用javascript生成一个core-label元素列表。

在文档(https://www.polymer-project.org/docs/elements/core-elements.html#core-label)中,可以将属性for添加到core-label中的输入元素中,以连接它们。

如果我像这样对它进行静态编码,就有可能:

代码语言:javascript
复制
<core-label>
     <core-image></core-image>
     <paper-checkbox for></paper-checkbox>
     <span>Text</span>
</core-label>

但是如果我试图在脚本中添加那些动态元素,这些元素就没有连接.

代码语言:javascript
复制
    var catLayout = document.createElement("core-label");
    var img = document.createElement("core-image");
    var chk = document.createElement("paper-checkbox");
    chk.setAttribute("for","");
    var label = document.createElement("span");
    var labelcontent = document.createTextNode("text");
    label.appendChild(labelcontent);
    catLayout.appendChild(img);
    catLayout.appendChild(chk);
    catLayout.appendChild(label);

谁能告诉我,出什么事了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-25 15:52:06

你现在所做的应该是有效的。我不知道您是否遇到了时间问题,因为您的脚本是在应用程序的更大上下文中执行的。但是,这里有一个功能等价的代码片段来完成这项工作:

代码语言:javascript
复制
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  
  <body>
    <script src="//www.polymer-project.org/webcomponents.js"></script>
    <link rel="import" href="//www.polymer-project.org/components/core-label/core-label.html">
    <link rel="import" href="//www.polymer-project.org/components/paper-checkbox/paper-checkbox.html">
    
    <div>
      <core-label>
       <paper-checkbox for></paper-checkbox>
       <span>Created via Markup</span>
      </core-label>
    </div>
    
    <div id="container"></div>
    
    <script>
      var coreLabel = document.createElement('core-label');
      var paperCheckbox = document.createElement('paper-checkbox');
      paperCheckbox.setAttribute('for', '');
      var text = document.createElement('span');
      text.textContent = 'Created via JavaScript';
      coreLabel.appendChild(paperCheckbox);
      coreLabel.appendChild(text);
      document.querySelector('#container').appendChild(coreLabel);
    </script>
  </body>
</html>

尽管如此,我很好奇为什么您需要通过JavaScript创建这些元素。我个人认为,当使用聚合物的<template>逻辑通过DOM处理尽可能多的时候,聚合物代码更容易阅读和维护。例如,如果您由于想有条件地包含这些元素而诉诸于JavaScript元素创建,那么将<template if="{{your_condition}}">包装在DOM的这一部分可以为您处理。类似地,如果您在JavaScript中执行此操作,因为您希望对数组中的每个元素重复多次逻辑,那么<template repeat="{{item in your_array}}">可以为您处理这个问题。如果你还没看过文档的数据绑定部分,那就太棒了。

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

https://stackoverflow.com/questions/27129396

复制
相关文章

相似问题

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