将参数传递给Web组件以在类中使用失败

时间:2016-10-03 19:17:47

标签: javascript css polymer font-awesome

我在元素中有以下代码可以正常工作:

<i class="fa fa-user"></i>

但是,我想根据参数更改图标。所以我改变了这一点:

<i class="fa fa-{{icon}}"></i>

然后我将以下属性添加到Polymer元素:

icon: {
    type: String,
    value: 'user'
}

按原样运行,甚至没有尝试传递不同的值,只是让它使用默认的'user',它没有正确呈现。 DOM就是这样:

<i class="style-scope widget-iconblock"></i>

我还尝试了其他一些事情,包括用<i>替换整个{{i}}代码,然后返回一个类似于"<i class='fa fa-" + self.icon + "'></i>"的计算值,但会生成文字文字

我做错了什么?

2 个答案:

答案 0 :(得分:3)

将属性绑定到本机属性需要Polymer's attribute-binding syntax(即class$="{{prop}}"):

&#13;
&#13;
<head>
  <base href="https://polygit.org/polymer+1.7.0/components/">
  <script src="webcomponentsjs/webcomponents-lite.min.js"></script>
  <link rel="import" href="polymer/polymer.html">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.css">
</head>
<body>
  <x-foo></x-foo>

  <dom-module id="x-foo">
    <template>
      <i class$="fa fa-{{icon}}"></i>
    </template>
    <script>
    HTMLImports.whenReady(function() {
      Polymer({
        is: 'x-foo',
        properties : {
          icon: {
            type: String,
            value: 'user'
          }
        }
      });
    });
    </script>
  </dom-module>
</body>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我最终将以下代码添加到Polymer ready()函数中:

$('#myelement').append("<i class='fa fa-" + self.icon + "'></i>");

我仍然希望看到其他/更好的答案。